非贪婪的regexp吃得太多了

时间:2017-05-29 19:08:25

标签: php regex preg-replace preg-match

我有一个字符串

<div class="line"><input name="sid" value="" type="hidden"><img src="1.jpg" height="40" width="180"><input name="word" size="30" maxlength="50" value="" type="text"></div>

我尝试用name = word来查找和替换整个输入,使用此regexp:

/<input .+?word.+?>/ui

preg_match返回:

array (
  0 => '<input name="sid" value="" type="hidden"><img src="1.jpg" alt="CAPTCHA" height="40" width="180"><input name="word" size="30" maxlength="50" value="" type="text">',
)

请帮我写工作正则表达式

2 个答案:

答案 0 :(得分:0)

使用这个:/<input[^>]+name="word".+?>/ui

在您的模式中,它首先找到<input,然后找到word ... 如果您使用<input[^>]+,它会找到<input以及除>之前关闭name="word"以外的符号组。

答案 1 :(得分:0)

使用这个:/<input ([^>]+)?name=['"]?word['"]?([^>]+)?>/ui