وجود مشكلة مطابقة عنصر HTML باستخدام Preg_Match

StackOverflow https://stackoverflow.com/questions/2233392

  •  19-09-2019
  •  | 
  •  

سؤال

أحاول مطابقة عنصر HTML لكنني لا أعتقد أن مطابقتها لأن ألقاب $ فارغة - هل يمكن لأي شخص تصحيح لي؟

بلدي preg_match:

   preg_match_all("~<td align=\"left\" width=\"50%\">[^<]*. <b><a href=\"(.*?)\">[^<]*</a>~i", $main, $titles);

مثال HTML لمطابقة:

//<td align="left" width="50%">1. <b><a title="Wat" href="http://www.exmple.com/q.html">Wat</a></b><br></td>

هل فاتني شيء؟

شكرا كل ما للحصول على أي مساعدة

هل كانت مفيدة؟

المحلول

لا يوجد شيء للمباراة title="Wat" في ال <a> بطاقة شعار.

أود أن أقترح عدم استخدام Regex لتحليله على الرغم من ذلك. أنا لست على دراية جدا ب PHP لكنني متأكد من أنه لديه بالفعل شيء سيفعل معظم العمل من أجلك.

نصائح أخرى

كما قلت في تعليقي Regex نادرا ما إذا كانت الأداة المناسبة لاستخدامها عند محاولة تحليل HTML. Im FING لاستخدام مثال zend_dom_Queery، أحد Ecomponetns في إطار Zend لمجرد أنني لم أر رأي ذلك الموصى به في أحد هذه الأسئلة حتى الآن. وبالتالي...

$dom = new Zend_Dom_Query($htmlHaystack);
$anchors = $dom->query('//td/a[@title]'); // xpath here
if(count($anchors) > 0)
{
  $titles = array();
  foreach($anchors as $element)
  {
     $titles[] = $element->getAttribute('title');
  }
}
else
{
  $title = null;
}
$string='<td align="left" width="50%">1. <b><a title="Wat" href="http://www.exmple.com/q.html">Wat</a></b><br></td>';
$s = explode("</a>",$string);
foreach($s as $k){
   if (strpos($k,"href")!==FALSE){
        echo preg_replace('/.*href="|">.*/ms',"",$k);
   }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top