Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyrażenia regularne
brobo
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.02.2012

Ostrzeżenie: (0%)
-----


Witam, z wyrażeń regularnych niestety jestem cienki jak.... stąd mój problem.

Krótkim kawałkiem kodu chciałbym usuwać nadmiar informacji z kanału rss tzn. chcę usunąć tagi <content:encoded>.*</content:encoded>.

  1. $output = preg_replace('/(\<content\:encoded\>.*\<\/content\:encoded\>)/s', '', $output);


Niestety efekt jest taki, że usuwa wszystko co znajduje się między pierwszym wystąpieniem <content:encoded>, a ostatnim wystąpieniem </content:encoded> (w całym kodzie kanały), zamiast usuwać pojedyncze elementy. Dobrze byłoby wykluczyć występowanie w ciągu .* chociażby </content:encoded> lub innego tagu xml w rss np. <title>. Tylko jak?

Z góry dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
brobo
post
Post #2





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 22.02.2012

Ostrzeżenie: (0%)
-----


Cytat(Adi32 @ 6.04.2012, 08:11:43 ) *
Potrzebujesz leniwego:

  1. $output = preg_replace('/(\<content\:encoded\>.*?\<\/content\:encoded\>)/s', '', $output);


Ehh, aż wstyd, że takie proste było. O to chodziło (IMG:style_emoticons/default/smile.gif) .

@hind niestety Twoja propozycja pozostawia kanał bez zmian (zamienia znaleziony ciąg znalezionym ciągiem?).

Dzięki, pozdrawiam!

Ten post edytował brobo 6.04.2012, 07:45:02
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 23:24