正则表达式查找并替换输入标签'

时间:2013-11-16 11:27:01

标签: php html regex replace find

我对正则表达式很陌生,我有试错法测试。

如何更换:

<input name="token" type="text" id="test" value="">

首先如果 id 存在,它将首先搜索id="test",它会在value=""代码中设置“变量”。

但如果value=""包含变量

例如:

<input name="token" type="text" id="test" value="token" />

它应该将整个value="token"替换为所需的变量。

preg_match('%<[^>]*(id="test"[^>]*>)([^<]*)</[^>]*>%', $html, $match);

它只搜索具有结束标记的HTML标记

ex:<div id="test"></div>

以及来自'input tags'的值。我提出了这个不太好的解决方案。

$data['token'] = 'test';

str_replace(array_keys($data),array_values($data),$html);

有人可以帮助我,并给我一些有关PHP正则表达式的提示。谢谢。

1 个答案:

答案 0 :(得分:1)

尝试:

<[^>]*value="(['token'"]*)"[^>]*>


Negated char class [^>] 0 to infinite times 
[greedy] matches any character except:> The character >
value=" Literal value="
1st Capturing group (['token'"]*)
Char class ['token'"] 0 to infinite times [greedy] matches:
'token'" One of the following characters 'token'"