PHP 正则表达式不起作用


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 以上的数字也有效。