PHP正则表达式预匹配所有问题
我有这个数组,我想匹配所有IDPHP正则表达式预匹配所有问题,php,regex,Php,Regex,我有这个数组,我想匹配所有ID Array ( [0] => <td><a href="readmail.html?id=xsX321dsa">Hi</a></td> ) 数组 ( [0] => ) 我尝试了这个,但它只是返回一个空结果 preg_match_all("#<td><a href=\"readmail.html?id=(.*?)\">#si",$output[0],$match); pre
Array
(
[0] => <td><a href="readmail.html?id=xsX321dsa">Hi</a></td>
)
数组
(
[0] =>
)
我尝试了这个,但它只是返回一个空结果
preg_match_all("#<td><a href=\"readmail.html?id=(.*?)\">#si",$output[0],$match);
preg#u match_all(“##si”,$output[0],$match);
有人知道这一点吗?您需要转义
?
以逐字匹配问号,因为它在正则表达式中有特殊含义
preg_match_all("#<td><a href=\"readmail\.html\\?id=(.*?)\">#si",
$output[0], $match);
更新您还应该退出
。它匹配任何字符(根据模式换行除外)
更新除了使用\
进行转义外,还可以使用\Q
、\E
(忽略\Q
和\E
中的元字符并按字面进行匹配):
preg#u match_all(“##si”,
$output[0],$match);
dot
和问号?
在正则表达式模式中具有特殊意义。你需要逃避它
匹配任何字符(换行符除外)
量词要尽可能多地在零和一次之间匹配?
<td><a href="readmail\.html\?id=(.*?)">
和
示例代码:
$re = "/<td><a href=\\"readmail\\.html\\?id=([^\\"]+)\\">/";
$str = "<td><a href=\"readmail.html?id=xsX321dsa\">Hi</a></td>";
preg_match_all($re, $str, $matches);
$re=“/”;
预匹配全部($re,$str,$MATCHS);
@Unihedron,谢谢。我不知道那件事。
<td><a href="readmail\.html\?id=(.*?)">
<td><a href="readmail\.html\?id=([^"]+)">
$re = "/<td><a href=\\"readmail\\.html\\?id=([^\\"]+)\\">/";
$str = "<td><a href=\"readmail.html?id=xsX321dsa\">Hi</a></td>";
preg_match_all($re, $str, $matches);