簡體   English   中英

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以上的數字也起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM