猿问

怎么做正则表达式模式与字符串中的任何地方都不匹配?

怎么做正则表达式模式与字符串中的任何地方都不匹配

我正在尝试<input>使用此模式匹配类型“隐藏”字段:

/<input type="hidden" name="([^"]*?)" value="([^"]*?)" />/

这是示例表单数据:

<input type="hidden" name="SaveRequired" value="False" /><input type="hidden" name="__VIEWSTATE1" value="1H4sIAAtzrkX7QfL5VEGj6nGi+nP" />
<input type="hidden" name="__VIEWSTATE2" value="0351118MK" /><input type="hidden" name="__VIEWSTATE3" value="ZVVV91yjY" />
<input type="hidden" name="__VIEWSTATE0" value="3" /><input type="hidden" name="__VIEWSTATE" value="" />
<input type="hidden" name="__VIEWSTATE" value="" />

但我不知道的typenamevalue属性将始终出现在相同的顺序。如果type属性是最后一个,则匹配将失败,因为在我的模式中,它在开始时。

问题:
如何更改模式以使其匹配,无论<input>标签中属性的位置如何?

PS:顺便说一下,我正在使用基于Adobe AirRegEx桌面工具来测试正则表达式。


慕慕森
浏览 731回答 3
3回答

郎朗坤

你可以写一本像tchrist这样的小说您可以使用DOM库,加载HTML并使用xpath并使用//input[@type="hidden"]。或者,如果您不想使用xpath,只需获取所有输入并过滤隐藏哪些输入getAttribute。我更喜欢#2。<?php $d&nbsp;=&nbsp;new&nbsp;DOMDocument();$d->loadHTML( &nbsp;&nbsp;&nbsp;&nbsp;' &nbsp;&nbsp;&nbsp;&nbsp;<p>fsdjl</p> &nbsp;&nbsp;&nbsp;&nbsp;<form><div>fdsjl</div></form> &nbsp;&nbsp;&nbsp;&nbsp;<input&nbsp;type="hidden"&nbsp;name="blah"&nbsp;value="hide&nbsp;yo&nbsp;kids"> &nbsp;&nbsp;&nbsp;&nbsp;<input&nbsp;type="text"&nbsp;name="blah"&nbsp;value="hide&nbsp;yo&nbsp;kids"> &nbsp;&nbsp;&nbsp;&nbsp;<input&nbsp;type="hidden"&nbsp;name="blah"&nbsp;value="hide&nbsp;yo&nbsp;wife"> ');$x&nbsp;=&nbsp;new&nbsp;DOMXpath($d);$inputs&nbsp;=&nbsp;$x->evaluate('//input[@type="hidden"]');foreach&nbsp;(&nbsp;$inputs&nbsp;as&nbsp;$input&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$input->getAttribute('value'),&nbsp;'<br>';}结果:hide&nbsp;yo&nbsp;kids<br>hide&nbsp;yo&nbsp;wife<br>
随时随地看视频慕课网APP
我要回答