0

これらの一致を 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);

それでもうまくいきません。

4

2 に答える 2

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);

デモ、出力:

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"
  }
}
于 2012-06-03T12:03:59.140 に答える
1
preg_match_all('/links\([0-9]+\)  = \"([^\.]*?).asp\"/i', $html, $out, PREG_SET_ORDER);

文字をエスケープする必要があります()。また、 9 以上の数字も機能するように、 +afterを追加しました。[0-9]

于 2012-06-03T12:04:57.967 に答える