我使用以下内容检查file.php上是否存在链接:
$fopen = fopen('file.php', 'r');
$fread = fread($fopen, filesize('file.php'));
$pattern = "/^<a href=/i";
if (preg_match($pattern, $fread)) {
echo 'Match Found';
} else {
echo 'Match Not Found';
}
如果我echo preg_match($pattern, $fread)
我得到一个布尔值,而不是找到的匹配。我尝试了php.net手册上的内容并做了这个:
preg_match($pattern, $fread, $matches);
然后当我回复$ match时,我收到了“Array”消息。所以我尝试了一个foreach循环,当没有显示任何内容时,我尝试了$ matches [0]并且没有输出任何内容。
那么如何展示找到的匹配?
以下是file.php的唯一内容:
<a href="">Hello</a>
<a href="http://google.com">Hello</a>
<a href="/index.html">Hello</a>
答案 0 :(得分:1)
要获得您想要实际显示的链接,您需要在正则表达式中包含匹配组:(注意我还添加了m
修饰符来处理多行)
$pattern = "/^<a href=(.*?)>/im";
然后,如果您只是想要查看匹配结果数组的内容以进行调试,可以使用print_r
。
if (preg_match_all($pattern, $fread, $matches)) {
echo 'Match Found';
print_r($matches);
} else {
echo 'Match Not Found';
}
答案 1 :(得分:1)
更好的方法是使用DOMDocument来解析HTML文档
$dom = new DomDocument;
$dom->loadHTMLFile('file.php');
$nodes = $dom->getElementsByTagName('a');
foreach ($nodes as $node)
{
echo simplexml_import_dom($node)->asXML(), '<br/>';
}