怎么做正则表达式模式与字符串中的任何地方都不匹配我正在尝试<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="" />但我不知道的type,name和value属性将始终出现在相同的顺序。如果type属性是最后一个,则匹配将失败,因为在我的模式中,它在开始时。问题:如何更改模式以使其匹配,无论<input>标签中属性的位置如何?PS:顺便说一下,我正在使用基于Adobe Air的RegEx桌面工具来测试正则表达式。?
3 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
你可以写一本像tchrist这样的小说
您可以使用DOM库,加载HTML并使用xpath并使用
//input[@type="hidden"]
。或者,如果您不想使用xpath,只需获取所有输入并过滤隐藏哪些输入getAttribute
。
我更喜欢#2。
<?php $d = new DOMDocument();$d->loadHTML( ' <p>fsdjl</p> <form><div>fdsjl</div></form> <input type="hidden" name="blah" value="hide yo kids"> <input type="text" name="blah" value="hide yo kids"> <input type="hidden" name="blah" value="hide yo wife"> ');$x = new DOMXpath($d);$inputs = $x->evaluate('//input[@type="hidden"]');foreach ( $inputs as $input ) { echo $input->getAttribute('value'), '<br>';}
结果:
hide yo kids<br>hide yo wife<br>
添加回答
举报
0/150
提交
取消