Autor Zpráva
Alexi
Profil *
Ahoj, mám tento script:
$str = "Test odkazu www.odkaz.cz nebo http://www.odkaz.cz či www.odkaz.cz";

 $link = @ereg_replace("[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*", "[* CENSORED *]", $str);
$link = @ereg_replace("[a-zA-Z]+://www.([.]?[a-zA-Z0-9_/-])*", "[* CENSORED *]", $str);
$link = @ereg_replace("www.([.]?[a-zA-Z0-9_/-])*", "[* CENSORED *]", $str);
echo $link;

chci, aby z toho řetězce vzniklo tohle:
Test odkazu [* CENSORED *] nebo [* CENSORED *] či [* CENSORED *]

ale místo toho vnzniká tohle:

Test odkazu [* CENSORED *] nebo http://[* CENSORED *] či [* CENSORED *]

ví nekdo přoč? děkuju
Tori
Profil
Alexi:
Protože si proměnnou $link pořád přepisujete, a přitom nahrazení děláte pokaždé v původním textu (místo ve výsledku z předchozího replace).

edit: Použila bych preg_replace, a šlo by to i jedním regulárem:
$re = '~[a-zA-Z]+://(www.)?([.]?[a-zA-Z0-9_/-])+|www.([.]?[a-zA-Z0-9_/-])+~i';
echo preg_replace($re, '[* CENSORED *]', $str);
Alexi
Profil *
Tori:
Děkuji moc, nevšiml jsem si, moje hloupost.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0