php preg_match desen sorun, düzenli ifade deseni

2 Cevap php
<tr  id='ieconn3' >
  <td><table width='100%'><tr><td valign='top'><table width='100%'><tr><td>aaaaa
<br>&nbsp;</td></tr><tr><td> 

I <br> veya </td> kadar aaaaa kısmını almak istiyorum. Ben desen çok denedim ama işe yaramadı. herhangi bir yardım?

2 Cevap

HTML normal bir dil değildir ve bu nedenle düzenli ifadelerle tarif edilemez olarak HTML ayrıştırmak için normal ifadeler kullanmak için denemek gerekir. Yerine uygun bir HTML çözümleyici kullanın.

Eğer XHTML kullanarak ediyorsanız, SimpleXML XML olarak ayrıştırmak ve SimpleXMLElement::xpath ile sorgulamak için kullanabilirsiniz. Ve HTML belgeleri için, size Simple HTML DOM Parser kullanabilirsiniz. Ve DOMDocument hatta XHTML ve HTML hem de işleyebilir.

Bamya belirttiği gibi bunun için bir regexpi kullanmakta ısrar ederseniz, bu sadece bir dev karmaşa neden olur. Ancak, emin iseniz HTML şans, bu bir hile yapacak değildir:

/<tr><td>(.*)<\/td><\/tr>/

Bu gibi kullanın:

$string = "<tr  id='ieconn3' >
<td><table width='100%'><tr><td valign='top'><table width='100%'><tr><td>aaaaa<br>&nbsp;</td></tr><tr><td>";

$matches = array();
preg_match("/<tr><td>(.*)<\\/td><\\/tr>/", $string, $matches);

print($matches[1]);