[英]PHP regular expression not working
我正在嘗試從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);
仍然不起作用。
如果您不想創建新的匹配組,則需要轉義(
和)
字符,請看這里: 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);
演示 ,輸出:
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"
}
}
preg_match_all('/links\([0-9]+\) = \"([^\.]*?).asp\"/i', $html, $out, PREG_SET_ORDER);
您需要轉義()
字符。 另外,我在[0-9]
之后添加了一個+
,以便9以上的數字也起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.