Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]str_replace nie dziala z tekstem ze znakami nowej linii
Forum PHP.pl > Forum > Przedszkole
Octobus
Potrzebuje zamienic wiele linijek tekstu (str) na calkowicie inny tekst. Musze sprawdzac czy zmieniany text jest dokladnie taki jak podalem co do znaku (przez stripos np) a pozniej dopiero zmieniac jezeli jest taki jak podany. Niestety nie moge przejsc przez to jak zmieniac tekst ktory ma nowe linijki ? Probowalem w ponizszy sposob, oczywiscie nie zadzialal

Cytat
$str = 'pierwsza <b>linijka</b> tekstu
druga <strong>linijka</strong>
trzecia linijka
czwarta linijka';

//test 2 - pare linijek
$zamien_z = 'druga <strong>linijka</strong>
trzecia linijka';

$zamien_na = 'zmienione
linijki
tekstu';

if(stripos($str, $zamien_z) !== false){
$test2 = str_replace($zamien_z, $zamien_na, $str);
}

echo 'test 2: '.$test2;
trueblue
Nie bardzo rozumiem co masz na myśli pisząc: Niestety nie moge przejsc przez to jak zmieniac tekst ktory ma nowe linijki
Przykład działa. Jeśli w tekście zmienianym zawiera się zamiennik, to otrzymujesz nowy tekst.
adbacz
Ten IF jest niepotrzebny w sumie. Jak str_replace nie znajdzie danego siągu to go i tak nie zamieni. Poza tym sprawdziłem ten Twój kod, i wygenerował poprawny rezultat - zamieniło teksty.

Poczytaj o kodowaniu snaków, o znakach nowej linii. Jeśli masz inne znaki nowej linii to Ci str_replace nie zamieni. Musiałbyś w tedy użyc preg_replace.
Octobus
przepraszam, tekst pobrany z bazy nie dzialal. Podany tutaj dziala. Chodzi o inne znaki nowej linii ktore nie wiem jak rozpoznac. Z nimi wlasnie nie moge sobie poradzic.
trueblue
W bazie najprawdopodobniej jest tylko LF (\n), a w tekście CRLF(\r\n).
Spróbuj zamienić w tekście \r\n na \n. I wtedy podstawiać.

Jakie znaki kończą linię możesz sprawdzić tak: https://www.php.net/manual/en/function.ord.php (przykład #2).
adbacz
Tak sobie najpierw napraw nowe linie, a potem swoim kodem: https://stackoverflow.com/a/7836692
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.