如何使用正则表达式和Simple HTML DOM Parser查找页面上的所有外部链接?我有以下代码来查找所有链接。
<?php
include_once('simple_html_dom.php');
$url = "http://www.tokyobit.com";
$html = new simple_html_dom();
$html->load_file($url);
foreach($html->find('a') as $a){
echo $a;
}
?>
如何添加正则表达式以查找以http://
,https://
或ftp://
开头的所有链接?
foreach($html->find('a') as $a){
$regex = ; //regex here
if(preg_match_all($regex, $a, $matches)){
foreach($matches as $match){
echo $match . '<br />';
}
}
}
答案 0 :(得分:0)
您可以使用自定义strpos将数组用作指针
您首先需要此功能
function strposa($haystack, $needle, $offset=0) {
if(!is_array($needle)) $needle = array($needle);
foreach($needle as $query) {
if(strpos($haystack, $query, $offset) !== false) return true; // stop on first true result
}
return false;
}
然后在你的代码中
$needle = array("ftp://","http://","https://");
foreach($html->find('a') as $a){
if(strposa($a, $needle){
echo $matches;
}
}
答案 1 :(得分:0)
试试这个:
foreach($html->find('a') as $a){
if(preg_match('#^(?:https?|ftp)://.+$#', $a->href)){
echo $matches;
}
}
答案 2 :(得分:0)
你可以这样做:
include_once('simple_html_dom.php');
$url = "http://www.tokyobit.com";
$html = new simple_html_dom();
$html->load_file($url);
$result = array();
foreach($html->find('a') as $a){
$href = $a->href;
if (strpos($href, '://', 3)!==false) $result[] = $href;
}
print_r($result);
答案 3 :(得分:0)
将$ regex变量更改为:
$regex = "#(https?|ftp)://.#";