【问题标题】:regex find and replace 'input tags'正则表达式查找并替换“输入标签”
【发布时间】:2013-11-29 20:04:08
【问题描述】:

我对正则表达式很陌生,我已经进行了反复试验。

如何替换:

<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('%&lt;[^&gt;]*(id="test"[^&gt;]*&gt;)([^&lt;]*)&lt;/[^&gt;]*&gt;%', $html, $match);

它只搜索有结束标签的 HTML 标签

例如:&lt;div id="test"&gt;&lt;/div&gt;

以及来自“输入标签”的值。我想出了这个不好的解决方案。

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

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

谁能帮助我,给我一些关于 PHP 正则表达式的提示。谢谢。

【问题讨论】:

  • 不要为此使用正则表达式,而是使用 HTML 解析器。
  • 是的,我知道,但我只是想试试。就像我说的那样,我想尝试反复试验

标签: php html regex replace find


【解决方案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'"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多