[php] problem z szukaniem / zamianą słów

0

Mam problem z zastępowaniem słów w długim tekście. Używam do tego funcji str_ireplace (ireplace, żeby zastępowało bez względu na wielkość liter). Niestety (najczęściej w przypadku krótkich wyrazów) zastępuje też nie te słowa co trzeba, bo na przykład wyraz and znajduje się też w słowie random i wychodzą bzdury. Celem moim jest żeby zamieniało tylko całe wyrazy.

Domyślam się, że można to pewnie jakoś zrobić używając wyrażeń regularnych, ale kompletnie jestem w tym zielony : /

Pomoże ktoś?

0
$string = "and a random pand and size";
$str_replace = "$1TAG$3";

$reg = "/(^|\s)(and)(\s|$)/";

while(preg_match_all($reg,$string,$match))
{
    $string = preg_replace($reg,$str_replace,$string);

}

echo $string;

sprawdzalem, działa

a tak btw, istnieje jakaś funkcja pokroju "preg_replace_all"?

0

Wielkie dzięki, działa świetnie, oprócz tego, że ta funkcja jest wrażliwa na wielkość liter : /
I znowu nie wiem jak to załatwić. Ale zawsze to bliżej niż dalej : )

Nie wiem po co wrzuciłeś tu tą pętlę - wystarczyło samo wywołanie funkcji preg_replace, bo zamienia ona za jednym zamachem wszystkie wystąpienia danego stringa, chyba, że w czwartym parametrze ustalisz ograniczenie.

0

Masz racje z tą pętlą, mój błąd.

A co do wielkości liter:

podmień ten fragment i bedzie śmigać

$reg = "/(^|\s)(and)(\s|$)/i";

0

Wieelkie dzięki, Morrison :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0