【发布时间】:2013-02-18 21:24:13
【问题描述】:
这是我的代码:
preg_match_all('/<a href="(.+?)index.php(.+?)&abc=(.+?)"/', $dataToParse, $matches);
foreach ($matches as $val)
{
$absUrl = $val[1] . 'index.php' . $val[2] . '&abc=' . $val[3];
echo $absUrl;
}
但是,$val[1] 是整个匹配字符串,包括 <a href。我相信我的语法错误,但我一直在尝试修复它,但没有运气。不确定如何正确执行此操作。
【问题讨论】:
-
正确执行会涉及到 DOM 解析器,而不是使用正则表达式来解析 HTML。
-
现在是 2013 年。使用 XML 解析器。
-
@JackManey:继承了一个与其他人一起这样做的项目。
-
不要使用正则表达式解析 HTML。您无法使用正则表达式可靠地解析 HTML。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。有关如何使用 PHP 模块正确解析 HTML 的示例,请参阅 htmlparsing.com/php.html。
-
e 没有解析 HTML,e 正在解析 URL。
标签: php regex html-parsing