Php 与正则表达式的错误匹配

Php 与正则表达式的错误匹配,php,regex,joomla,preg-match,Php,Regex,Joomla,Preg Match,还有我正在检查的输入的名称,以便在每次页面加载时在长度和名称上进行更改。根据以下手动输入: 如果提供了匹配项,则它将填充搜索结果$匹配项[0]将包含与完整模式匹配的文本,$matches[1]将包含与第一个捕获的括号子模式匹配的文本,依此类推 没什么不对的。项目[0]始终包含整个匹配项。来自(我的): 如果提供了匹配项,则为 充满了搜索结果。 $matches[0]将包含 匹配完整模式,$matches[1] 将具有与 第一次捕获括号 子模式,等等 您的正则表达式(忽略了您首先使用正则表达式处理

还有我正在检查的输入的名称,以便在每次页面加载时在长度和名称上进行更改。

根据以下手动输入:

如果提供了匹配项,则它将填充搜索结果$匹配项[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'