Php 与正则表达式的错误匹配
还有我正在检查的输入的名称,以便在每次页面加载时在长度和名称上进行更改。根据以下手动输入: 如果提供了匹配项,则它将填充搜索结果$匹配项[0]将包含与完整模式匹配的文本,$matches[1]将包含与第一个捕获的括号子模式匹配的文本,依此类推Php 与正则表达式的错误匹配,php,regex,joomla,preg-match,Php,Regex,Joomla,Preg Match,还有我正在检查的输入的名称,以便在每次页面加载时在长度和名称上进行更改。根据以下手动输入: 如果提供了匹配项,则它将填充搜索结果$匹配项[0]将包含与完整模式匹配的文本,$matches[1]将包含与第一个捕获的括号子模式匹配的文本,依此类推 没什么不对的。项目[0]始终包含整个匹配项。来自(我的): 如果提供了匹配项,则为 充满了搜索结果。 $matches[0]将包含 匹配完整模式,$matches[1] 将具有与 第一次捕获括号 子模式,等等 您的正则表达式(忽略了您首先使用正则表达式处理
没什么不对的。项目[0]始终包含整个匹配项。来自(我的): 如果提供了
匹配项
,则为
充满了搜索结果。
$matches[0]
将包含
匹配完整模式,$matches[1]
将具有与
第一次捕获括号
子模式,等等
您的正则表达式(忽略了您首先使用正则表达式处理HTML的事实,您知道您不应该这样做)有点太复杂了
Array ( [0] => [1] => 7d37dddd0eb2c85b8d394ef36b35f54f)
$regexp='##i'
- 您根本不需要非捕获组
- 您可以使用
,这将您限制为单个字符<代码>\s+可能更好\s
- 使用与
不同的东西作为正则表达式边界,使得正则表达式中的正向斜杠转义变得不必要/
- 使regex不区分大小写也很有用
- auth标记看起来像一个十六进制字符串,因此不需要匹配
a-z
[0]=>[1]
实际上是(在网页源代码中)[0]=>''[1]=>
谢谢。您的正则表达式看起来更容易阅读,我知道您不应该使用正则表达式进行html匹配,但这似乎是一个很好的例子。@Ballsacian1:这是您的葬礼。;-)尽管如此,研究DOMDocument::loadHTML并用DOM和XPath解决这个问题还是值得的。
Array ( [0] => [1] => 7d37dddd0eb2c85b8d394ef36b35f54f)
$regexp = '#<input\s+type="hidden"\s+name="([0-9a-f]*)"\s+value="1"\s*/>#i'