我有一个传递HTML字符串的过滤器钩子。示例字符串可能是:
'<input type="text" value="4893" />'
将字符串传递给过滤器钩子:
add_filter( 'html_filter', 'my_html_filter', 10, 1 );
function my_html_filter( $html ) {
$html = <--- REPLACE VALUE ATTRIBUTE HERE
return $html;
}
我在my_html_filter()
内需要做的是替换value=""
的值,我不知道如何在$html
中隔离它。作为一个随机的例子,说$html
传递为:
'<input type="text" value="345" />'
我需要将其更改为:
'<input type="text" value="14972" />'
我该怎么做? str_replace和正则表达式的组合?
答案 0 :(得分:1)
使用HTML解析器解析HTML!
$html = '<input type="text" value="4893" />';
$dom = new DomDocument;
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName('input');
$node = $nodes[0];
$node->setAttribute('value', 'foo');
echo $dom->saveHTML($node);
结果:
<input type="text" value="foo">
答案 1 :(得分:0)
add_filter( 'html_filter', 'my_html_filter', 10, 1 );
function my_html_filter( $html ) {
// assuming you have a way to know the new value you want
// i used an example value, probably you have to construct
// the following string
$new_value = 'value="65432"';
$html = preg_replace('/value="[0-9]+"/', $new_value, $html);
return $html;
}