Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenia regularne do wyszukiwania obrazka
Forum PHP.pl > Forum > Przedszkole
f1xer
Ma ktoś może gotowe wyrażenie regularne za pomocą którego będę mógł z tekstu wyciągnąć obrazek razem z tagiem img i wszystkim co się w nim znajduje czyli mniej więcej chodzi o coś takiego:
Kod
<img*/>

lub
Kod
<img*/>

lub
Kod
<img*>

i analogicznie zamienione na encje:
Kod
<img*>

gdzie * to dowolny ciąg znaków.

Przy okazji gdyby ktoś miał link do jakiegoś na prawdę porządnego opracowania traktującego o wyrażeniach regularnych w PHP
byłbym niezmiernie wdzięczny

edit, nie wiem czemu nie chce poprawnie wyświetlić encji tak więc dodam że chodzi również o wyszukiwanie obrazka gdzie znaki <> są zapisane za pomocą encji lt i gt
cojack
Kod
<img.+>


Kod
preg_match('/<img.+>/',$dane);


Jak nie działa to: http://wyrazenia-regularne.pl/

Jak za mało to: http://www.regular-expressions.info/

Info od wujka google.
wookieb
Kod
<img.+>


[/quote]
Jak juz to
Kod
<img.+?>

Kod
preg_match('/<img.+>/',$dane);


Cytat(cojack @ 20.08.2009, 02:16:56 ) *
Info od Boga (czytaj google)

Wiesz, że w tym momencie obrażasz czyjeś uczucia religijne? Uważaj co mówisz.
askone
A na koniec to jeszcze może:

regexlib

smile.gif
tomaszdurka
Wyrażenia regularne "matchują" jak najwięcej, a rozumiem że to ma być wyciągane z jakiegoś większego tekstu HTML.
Dlatego już w przypadku:
  1. <a href="link"><img src="path"></a>

'<img.*>' zwróci nam:
  1. <img src="path"></a>



Rozwiązaniem jest zanegowanie zamykającego nawiasu.

  1. $pattern = '/<img[^>]+>/';
  2. preg_match ($pattern, $text, $matches);



Jeśli zależy ci na atrybucie 'src' to można dodać...

  1. $pattern = '/<img[ \n\t ]+src=[\'"]([^\'"]*)[\'"][\t\n ]*\/?>/';



Pozdrawiam
cojack
Kod
$pattern = '/<img[^>]+>/';

To rozwiązanie jest jak najbardziej poprawne, zapomniałem sobie o tym że img sie nie zaymka normalnie ;]
f1xer
Dziękuje za liczne odpowiedzi, jak wspominałem potrzebowałem też encje więc mój problem rozwiązało wyrażenie:

  1. $pattern = '/(<|&lt;)img[^>]+(>|&gt;)/';
seth-kk
czyzby?
twojak klasa wyklucza '>' ale nie wyklucza encji domykajacej, poza tym to zapytanie zadziala krzyzowo (wylapie cos co zaczyna sie encja i konczy normalnym tagiem i odwrotnie - zwlaszcza te w alcie) lepiej byloby zalatwic to oddzielnymi regolami
przyklad wookieb jest najtrafniejszy szkoda ze po wstawieniu do preg_match() popelnil blod ktory poprawil
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.