【发布时间】:2016-01-22 10:32:18
【问题描述】:
我正在使用正则表达式来匹配链接,但结果缺少重要部分。匹配后,它会错过“amp;”由于某种原因在链接中。为什么会发生这种情况,我该如何解决?
$link = "/w/index.php?title=Category:English_verbs&pagefrom=AFFAMISH%0Aaffamish#mw-pages";
$regex = "~^/.+~";
preg_match($regex, $link, $match);
print_r($match);
结果:
Array ( [0] => /w/index.php?title=Category:English_verbs&pagefrom=AFFAMISH%0Aaffamish#mw-pages )
^---这个结果缺少verbs&和pagefrom之间的amp;。
预期结果:
Array ( [0] => /w/index.php?title=Category:English_verbs&pagefrom=AFFAMISH%0Aaffamish#mw-pages )
【问题讨论】:
-
您可能会在解码 html 实体的浏览器上看到输出。这是您正常运行的代码 ideone.com/h7xhhr 。您可以随时使用 php 函数
html_entity_decode()或htmlentities()分别解码或编码 html 实体。 -
查看源代码,而不是浏览器中呈现的输出。或添加明文标题
<?php header("Content-Type:text/plain");
标签: php regex hyperlink preg-match