Tho*_*mas 0 php preg-match-all
所以我试图从一个字符串中获取所有url,其脚本如下所示:
$file = file_get_contents('something.txt');
function getUrls($string) {
preg_match_all('~href=("|\')(.*?)\1~', $string, $out);
print_r($out);
}
getUrls($file);
Run Code Online (Sandbox Code Playgroud)
本文档中包含的网址可能不完善 - 即"/blah/blah.asp?2".问题是,当我运行这个脚本时,我得到一个看起来像这样的数组:
Array
(
[0] => Array
(
[0] => href="#A"
[1] => href="#B"
[2] => href="#C"
)
[1] => Array
(
[0] => "
[1] => "
[2] => "
)
[2] => Array
(
[0] => #A
[1] => #B
[2] => #C
)
)
Run Code Online (Sandbox Code Playgroud)
知道这可能会发生什么吗?我不知道为什么它返回带有哈希符号的字母列表而不是所需的URL.我该如何回归网址呢?
邪恶的方式:
$file = file_get_contents('something.txt');
function displayUrls($string) {
$pattern = '~\bhref\s*+=\s*+["\']?+\K(?!#)[^\s"\'>]++~';
preg_match_all($pattern, $string, $out);
print_r($out[0]);
}
displayUrls($file);
Run Code Online (Sandbox Code Playgroud)
好方法:
$doc = new DOMDocument();
@$doc->loadHTMLFile('something.txt');
$links = $doc->getElementsByTagName('a');
foreach($links as $link) {
$href = $link->getAttribute('href');
if ($href[0] != '#') $result[] = $href;
}
print_r($result);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1769 次 |
| 最近记录: |