gpt4 book ai didi

php - 在 php 中将 html 属性与正则表达式匹配

转载 作者:可可西里 更新时间:2023-10-31 23:43:46 25 4
gpt4 key购买 nike

我正在尝试创建一个表达式,它将搜索像 how2bypass.co.cc 这样的页面,并返回“form”标签中“action”属性的内容,以及“name”和“任何输入标签中的“类型”属性。我不能使用 html 解析器,因为我的最终目标是自动检测给定页面是否是 Web 代理,一旦网站发现我正在这样做,他们可能会开始做一些愚蠢的事情,比如编写整个使用 javascript 来阻止我解析它。

我正在使用代码

    preg_match_all('/<form.*action\="(.*?)".*>[^<]*<input.*type\=/i', $pageContents, $inputMatches);

这对于 action 属性工作正常,但是一旦我在 type\= 之后放置一个 ",代码就会停止工作。这是为什么?一次工作正常,但两次就不行了?

最佳答案

正则表达式是贪婪的...

如果您检查页面源代码,下面可能匹配第一个 <input最后一个type= ,并捕获其间的所有内容。

`<input.*type\=`

您将无法使用当前表达式捕获表单和所有输入,因为并非每个输入都以表单标记为前缀。您需要通过以下方式之一处理它:

  • 捕获整个表单标记,<form>...</form> , 然后是一个正则表达式来匹配捕获中的所有输入
  • 将您当前的表达式调整为非贪婪表达式,.*? ,并允许多次捕获输入标记。

关于php - 在 php 中将 html 属性与正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6158764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com