我正在尝试从html文件中获取这些匹配项。它有几个关于它们的陈述:
links(6) = "chicas-con-juguetes.asp"
我试图用这个函数提取它们:
public static function extract_all_vid_links($html){
$pattern="links([0-9]) = \"(.*).asp\"";
preg_match_all( "/$pattern/i", $html ,$out, PREG_SET_ORDER);
print_r($out);
// foreach($out as $values){
// echo $values[0]."<br/>";
// }
}
但它不起作用!?!?为什么呢?
改性:
$pattern="links\([0-9]\) = \"(.*).asp\"";
preg_match_all( "/$pattern/i", $html ,$out, PREG_SET_ORDER);
仍然无效。
答案 0 :(得分:2)
如果您不想创建新的匹配组,则需要转义(
和)
个字符,请查看此处:links\(\d\)
。
这确实解决了您所描述的问题(因此您的说明可能不对):
<?php
header('Content-Type: text/plain;');
$html = 'links(6) = "chicas-con-juguetes.asp"';
$pattern="links\(\d\) = \"(.*).asp\"";
$r = preg_match_all( "/$pattern/i", $html ,$matches);
var_dump($r, $matches);
Demo,输出:
int(1)
array(2) {
[0]=>
array(1) {
[0]=>
string(37) "links(6) = "chicas-con-juguetes.asp""
}
[1]=>
array(1) {
[0]=>
string(19) "chicas-con-juguetes"
}
}
答案 1 :(得分:1)
preg_match_all('/links\([0-9]+\) = \"([^\.]*?).asp\"/i', $html, $out, PREG_SET_ORDER);
您需要转义()
个字符。另外,我在+
之后添加了[0-9]
,以便9以上的数字也可以使用。