Autor Zpráva
icka
Profil *
Jak dám vyhledávat pomocí reguláru, když hledaný výraz MŮŽE BÝT i uprostřed nebo součástí slova...
Děkuji
nightfish
Profil
nepoužiješ identifikátory pro začátek/konec řetězce (tedy ^ a $)
icka
Profil *
No ty jsem dal pryč a stejně to nefunguje.. Jen když je před tím mezera...
nightfish
Profil
ukaž kód
icka
Profil *
Takto to mám:

eregi("\*[0-9]*\*", $slovo[$y])
djlj
Profil
Nejsem si jistý, ale spíš by tam mělo být

eregi("\*([0-9]*)\*", $slovo[$y])
icka
Profil *
To mi ale situaci neřeší...
nightfish
Profil
a není třeba oescapovat ty zpětný lomítka?
případně ještě napiš, na jaký řetězec to má matchovat...
icka
Profil *
No ty zpětný lomítka už jsou escapy :-)
Já sem vložím celou funkci:



function zprava($text) {
$text = htmlspecialchars($text);
$slovo = split("[[:blank:]]+", $text);
for ($y = 0; $y < count($slovo); $y++) {

//jedna se odkaz typu www...
if (eregi("^(www\..+\..{2,4}/?.*)", $slovo[$y])) {
$odkaz = eregi_replace("^(www\..+\..{2,4}/?.*)",
"<a href=\"http://\\1\" onclick=\"return!window.open(this.href);\">\\1</a> ",
$slovo[$y]);

//jedna se odkaz typu http://...,ftp://... nebo https://...
} elseif (eregi("^([fh]{1}[t]{1,2}[p]?[s]?://.+\..{2,4}/?.*)", $slovo[$y])) {
$odkaz = eregi_replace("^([fh]{1}[t]{1,2}[p]?[s]?://.+\..{2,4}/?.*)",
"<a href=\"\\1\" onclick=\"return!window.open(this.href);\">\\1</a> ", $slovo[$y]);

// ftp
} elseif (eregi("^(mailto:.+@.+\..{2,4})", $slovo[$y])) {
$odkaz = eregi_replace("^(mailto:(.+@.+\..{2,4}))",
"<a href=\"\\1\" onclick=\"return!window.open(this.href);\">\\2</a> ", $slovo[$y]);

// jde o smajlika
} elseif (eregi("\*([0-9]*)\*", $slovo[$y])) {
$cislo = substr($slovo[$y],1,-1);
if (Is_Numeric($cislo) && $cislo <= 28) {
$odkaz = eregi_replace("\*([0-9]*)\*", "<img src=\"smiles/Smiley" . $cislo . ".gif\" border=\"0\"> ", $slovo[$y]);
$smiles = 1;
} else {
$odkaz = $slovo[$y];
}
// smajlik 1
} elseif (eregi(":-\)", $slovo[$y])) {
$odkaz = eregi_replace(":-\)", "<img src=\"smiles/Smiley1.gif\" border=\"0\"> ", $slovo[$y]);
$smiles = 1;

// smajlik 2
} elseif (eregi(":-\(", $slovo[$y])) {
$odkaz = eregi_replace(":-\(", "<img src=\"smiles/Smiley19.gif\" border=\"0\"> ", $slovo[$y]);
$smiles = 1;
} else {
$odkaz = $slovo[$y] . " "; //jedna se o normalni slovo
}
$zprava .= $odkaz; //spojime vsechny slova opet dohromady
}
if (IsSet($smiles)) { $smiles = 1; } else { $smiles = 0; }

$pole[] = $zprava;
$pole[] = $smiles;
return $pole;
}
icka
Profil *
Funkce vrací případnej link nebo smajlíka ve fórum
nightfish
Profil
icka
výše uvedený kód mě funguje dobře
icka
Profil *
No mě taky, jen s tím, že mi neumí najít ty smajliky, když je uvedu bez mezery za slovem..
nightfish
Profil
ajo
uz to vidim

} elseif (eregi("\*([0-9]*)\*", $slovo[$y],$regs)) {

$cislo = $regs[1];
// $cislo = substr($slovo[$y],1,-1);

kdyz mu prislo na vstup text*20*text, tak z toho osekl prvni a posledni znak, zustalo ext*20*tex a to nevyhovelo podmince is_numeric, takze je potreba to upravit podle vyse uvedeneho kodu - pridat dalsi parametr do eregi(), ktery ti v poli vrati jednotlive matchovane casti retezce...
icka
Profil *
Jojo, to je přesně ono.. A já hledal chybu ve výrazu :-/ Díky moc... S tím už si poradím....
Toto téma je uzamčeno. Odpověď nelze zaslat.

0