سؤال

أريد تحليل المحتوى من

<td>content</td>
and
<td *?*>content</td>
and 
<td *specific td class*>content</td>

كيف يمكنني أن أجعل هذا مع مطابقة Regex و PHP و Preg؟

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

المحلول

أظن هذه يلخصها جيدة جدا.

باختصار، لا تستخدم التعبيرات العادية لتحليل HTML. بدلا من ذلك، انظر إلى فئات DOM وخاصة Domdocument :: Loadhtml.

نصائح أخرى

إذا كان لديك مستند HTML، فلا ينبغي أن تستخدم تعبيرات منتظمة لتحليله: HTML ليس "منتظما" كافيا لذلك.

سيكون حلا أفضل بكثير لتحميل مستند HTML الخاص بك باستخدام محلل DOM - على سبيل المثال، DOMDocument::loadHTML و استفسارات XPath. غالبا ما تفعل وظيفة رائعة حقا!

<td>content</td>: <td>([^<]*)</td>

<td *specific td class*>content</td>: <td[^>]*class=\"specific_class\"[^>]*>([^<]*)<

op، هنا طريقة واحدة

$str = <<<A
<td>content</td>
<td *?*>content</td>
<td *specific td class*>content</td>
<td *?*> multiline
content </td>
A;

$s = explode("</td>",$str);
foreach ($s as $a=>$b){
    $b=preg_replace("/.*<td.*>/","",$b);
    print $b."\n";
}

انتاج

$ php test.php
content

content

content

 multiline
content
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top