Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_replace zastępowanie ciągu
Forum PHP.pl > Forum > PHP
Mion
Witam,
mam problem z wyrażeniem regularnym które dopasuje się do wystąpienia ciągu /?str=1 w celu jego podmiany, ale już nie do /?str=10, /?str=11 itd.
Poniższe wyrażenie zastępuje, ale też zastępuje w pozostałych dając html1, html18 itd. Dodam, ze nie mogę zastosować parametru ograniczającego ile razy może podmienić .

  1. $string='<a href="http://serwis.pl/zdjecie/piekne-kwiatki,22879,1259.html/?str=1">poprzednia</a>[...]<a href="http://serwis.pl/zdjecie/piekne-kwiatki,22879,1259.html/?str=1">1</a>[...]<a href="http://serwis.pl/zdjecie/inne-piekne-kwiatki,22879,1259.html/?str=11">11</a>[...]<a href="http://serwis.pl/zdjecie/inne-piekne-kwiatki,22879,1259.html/?str=118">118</a>';
  2. echo preg_replace('/(\/\?str=1)/', '', $string);
Podsumowując wyrażenie:
/?str=1
ma zostać zastąpione niezależnie od ilości wystąpień w ciągu, ale takie:
/?str=10
/?str=12
/?str=102
nie mają być zastępowane.

Proszę o pomoc...
wookieb
A nie lepiej poprosu wyciagnac potrzebny ciag? :_)
Kod
preg_match_all('/\/\?str=([0-9+)/, $ciag, $matches);

Mion
Ja tego podciągu /?str=1 nie potrzebuję pobrać tylko jak już pisałem zamienić = usunąć z ciągu
---
W nocy męczyłem się z tym ponad dwie godziny jak widać bezskutecznie, ale tak to jest jak się jest zmęczony. W moim przypadku wystarczyło zmienić poszukiwany podciąg na
  1. preg_replace('/(\/\?str=1">)/', '">', $string);
i działa tak jak potrzebuję yahoo.gif
wookieb
Rozumiem moj blad
Kod
echo preg_replace('/(\/\?str=1[^0-9])/', '', $string);
Mion
Twój sposób też działa, ale po dodaniu " jako znaku do zamiany echo preg_replace('/(\/\?str=1[^0-9])/', '"', $string); inaczej kod linka się wysypuje.
Pozdrawiam
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.