非贪婪的正则表达式吃得太多

Non greedy regexp eat too much

我有一个字符串

<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 查找和替换整个输入,使用这个正则表达式:

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

preg_matchreturns这个:

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">',
)

请帮我写出有效的正则表达式

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

在您的模式中,它首先找到 <input,然后直到 word... 如果您使用 <input[^>]+ 它将找到 <input 并且比结束符号组除外 > 直到 name="word".

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