Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyrażenia regularne do wyszukiwania obrazka
f1xer
post
Post #1





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


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

Ten post edytował f1xer 19.08.2009, 23:18:11


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
cojack
post
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


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.

Ten post edytował cojack 20.08.2009, 09:36:03


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.


--------------------
Go to the top of the page
+Quote Post
askone
post
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


A na koniec to jeszcze może:

regexlib

smile.gif


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
tomaszdurka
post
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 1
Dołączył: 12.02.2007

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


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

Ten post edytował tomaszdurka 20.08.2009, 07:11:55
Go to the top of the page
+Quote Post
cojack
post
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


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

To rozwiązanie jest jak najbardziej poprawne, zapomniałem sobie o tym że img sie nie zaymka normalnie ;]


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
f1xer
post
Post #7





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


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;)/';


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
seth-kk
post
Post #8





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


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


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 07:35