1

このようなトピックはたくさんありますが、私は多くのエラーを試してみたので、これが元のテキストです

onclick="NewWindow('http://google.com','name','800','600','yes');return false">

これは私のコードです

    $re1='(onclick)';
  $re2='(=)';
  $re3='(.)';
  $re4='(NewWindow)';
  $re5='(\\()';
  $re6='(.)';
  $re7='((?:http|https)(?::\\/{2}[\\w]+)(?:[\\/|\\.]?)(?:[^\\s"]*))';

  $c=preg_match_all ("/".$re1.$re2.$re3.$re4.$re5.$re6.$re7."/is", $txt, $matches);

  print_r($matches);

正規表現とphpを使用してURLを取得するのを手伝ってくれる人はいますか??

このコードの何が問題になっていますか?

よろしく

4

4 に答える 4

0
preg_match("/NewWindow\('([^']*)'/",$txt, $matches);

一致する [1] には URL が含まれます

それはあなたが必要とするものですか?

(編集:括弧が正しくエスケープされていないため、コードブロックに入れます

于 2012-05-27T23:04:23.507 に答える
0

あなたの説明に基づいて、私が使用する正規表現は次のようになります。

/(?<=NewWindow\(\').*(http://|https://)[^\'\"]*/i

また

/(?<=onclick=\"NewWindow\(\').*(http://|https://)[^\'\"]*/i

正規表現をテストするための優れたツールは次のとおりです: http://gskinner.com/RegExr/

URL のみを出力し、最初の例で「NewWindow('」または「onclick="NewWindow('」、つまり、この場合は「http://google.com」) が前に付いている場合にのみ出力します。 .

于 2012-05-27T23:17:38.713 に答える
0

これはうまくいくはずです:

preg_match("/onclick=\"NewWindow\('(.*)','n/",$txt,$matches);
于 2012-05-27T23:12:09.320 に答える
0

これには貪欲でないマッチングを使用します。

preg_match("/onclick=\"NewWindow\('(.*?)'/", $txt, $matches);
于 2012-05-27T23:23:54.297 に答える