تحليل المحتوى في علامات HTML باستخدام Regex
-
18-09-2019 - |
سؤال
أريد تحليل المحتوى من
<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
لا تنتمي إلى StackOverflow