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] 包含网址

这是你需要的吗?

(编辑:放入代码块,因为括号未正确转义

于 2012-05-27T23:04:23.507 回答
0

这应该有效:

preg_match("/onclick=\"NewWindow\('(.*)','n/",$txt,$matches);
于 2012-05-27T23:12:09.320 回答
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\('(.*?)'/", $txt, $matches);
于 2012-05-27T23:23:54.297 回答