我对 XPATH 不熟悉,但我发现一篇不错的文章可以帮助您 Use PHP Functions in XPath Expressions。
你需要为她创建一个函数:preg_match_all或preg_match或preg_replace。
在编写包含 html 代码的变量后:
$YourHtmlCode = <<<HTML
'<p style="text-align: center;">(xxx) xxxx xxxx</p>
<span style="text-align: center;">xxxxxxxxxx</span>
<li style="text-align: center;">(xxx) x xxx xxxx</li>
<p style="text-align: left;">xxxxx xxxx</p>';
HTML;
将您的 html 文本转换为 DOM 文档,例如:
$dom = new DOMDocument;
$dom->loadHTML($YourHtmlCode, LIBXML_HTML_NOIMPLIED|LIBXML_HTML_NODEFDTD);
使用 registerPHPFunctions 调用上述函数后。
我使用 (?)(.*?)(?= 来匹配 > 和 之间的所有元素操作员。 Example
你可以这样做来获得所有零件。
<?php
$reg = '/(?<=\>)(.*?)(?=\<)/m';
$str = '<p style="text-align: center;">(xxx) xxxx xxxx</p>
<span style="text-align: center;">xxxxxxxxxx</span>
<li style="text-align: center;">(xxx) x xxx xxxx</li>
<p style="text-align: left;">xxxxx xxxx</p>';
preg_match_all($reg, $str, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
echo "matched: " . $val[0] . "\n";
}
?>
你可以直接在值中进行修改。
如果你想直接用正则替换值,你可以使用preg_replace。
例如:
<?php
$reg = '/(?<=\>)(.*?)(?=\<)/m';
$str = '<p style="text-align: center;">(xxx) xxxx xxxx</p>
<span style="text-align: center;">xxxxxxxxxx</span>
<li style="text-align: center;">(xxx) x xxx xxxx</li>
<p style="text-align: left;">xxxxx xxxx</p>';
echo preg_replace($reg, "ReplaceString", $str);
?>