Php 预处理
我的代码是这样的:Php 预处理,php,regex,Php,Regex,我的代码是这样的: $x = '<p>This is a <a href="1.php?src=123">first</a> paragraph.</p> <p>This is a <a href="2.php?id=987">second</a> pararaph.</p> <p>This is a <a href="3.php?reL=666">third</a>
$x = '<p>This is a <a href="1.php?src=123">first</a> paragraph.</p>
<p>This is a <a href="2.php?id=987">second</a> pararaph.</p>
<p>This is a <a href="3.php?reL=666">third</a> paragraph'</p>;
但是,它返回一个包含两个元素的数组,在phpliveregex.com上有点不同。
$input = '<p><a href="1.php?src=123">x</a></p> <p><a href="2.php?id=987">y</a></p> <p><a href="3.php?rel=666">third</a></p>';
$output = [];
preg_match_all("/href=\"(.*?)\"/", $input, $output);
print_r($output);
$input='';
$output=[];
preg_match_all(“/href=\”(.*?\”/”,$input,$output);
打印(输出);
有两个问题:
仅匹配第一个匹配项;改用preg_match
preg\u match\u all
- 通过添加问号使您的正则表达式变得懒惰:
-它应该匹配尽可能短的字符串(即在找到的第一个(.*)
处停止,而不是最后一个)“
$input=';$output=[];preg\u match(/href=\“(.\”)/”,$input,$output);print\r($output)
但是,它返回一个包含两个元素的数组,而且它有点不同。非常感谢。是的,我非常接近。。
$input = '<p><a href="1.php?src=123">x</a></p> <p><a href="2.php?id=987">y</a></p> <p><a href="3.php?rel=666">third</a></p>';
$output = [];
preg_match_all("/href=\"(.*?)\"/", $input, $output);
print_r($output);