Basit RegEx PHP

5 Cevap php

Ben regex tamamen yararsız duyuyorum ve bu son yarım saat için adamcağız beni beri, ben muhtemelen oldukça basit gibi ben burada bu kadar göndeririz düşünüyorum.

<a href="/folder/files/hey/">hey.exe</a>
<a href="/folder/files/hey2/">hey2.dll</a>
<a href="/folder/files/pomp/">pomp.jpg</a>

PHP ben <a> etiketleri Örneğin arasında ne ayıklamak gerekir:

hey.exe
hey2.dll
pomp.jpg

5 Cevap

Kullanmaktan kaçının '. *' Bunu ungreedy yapmak bile, RegEx'in ile biraz daha fazla uygulama var kadar. Senin için iyi bir çözüm olacağını düşünüyorum:

'/<a[^>]+>([^<]+)<\/a>/i'

'/' Ayraçları Not - PHP regex fonksiyonları gebelik paketi kullanmanız gerekir. Bu gibi görünecektir:

preg_match_all($pattern, $string, $matches);
// matches get stored in '$matches' variable as an array
// matches in between the <a></a> tags will be in $matches[1]
print_r($matches);

Bu işe görünür:

$pattern = '/<a.*?>(.*?)<\/a>/';

<a href="[^"]*">([^<]*)</a>

I this regular expression tester yararlı bulundu.

Burada çok basit bir tanesidir:

<a.*>(.*)</a>

Eğer aynı satırda birkaç maç varsa Ancak, dikkatli olmalı, örneğin

<a href="/folder/hey">hey.exe</a><a href="/folder/hey2/">hey2.dll</a>

Bu durumda, doğru düzenli ifade olacaktır:

<a.*?>(.*?)</a>

Not '?' '*' nicelik. Varsayılan olarak, nicelik onlar (bu örnekte sadece "hey2.dll dönecekti" anlamında) gibi onlar kadar karakterleri yemek anlamına gelir, açgözlü vardır. Bir tırnak işareti ekleyerek, daha iyi ihtiyaçlarınıza uygun olmalıdır, hangi onları ungreedy yapmak.