我想替换一个字符串,例如:
<input type="hidden" name="id" value="12345" />
但我遇到的问题是值(12345)每次都不同,所以我该如何做我想做的事情呢? ..我猜正则表达式'但没有线索
preg_replace('/\<input type="hidden" name="id" value="[0-9]+" \/\>/is', '', $source)
使用 DomDocument 和 XPath,通过限定的
name
属性可靠且直观地定位第一个出现的 HTML 输入元素。
代码:(演示)
$html = <<<HTML
<input type="hidden" name="id" value="12345" />
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
(new DOMXPath($dom))
->query('//input[@name="id"]')
->item(0)
->setAttribute('value', 'new');
echo $dom->saveHTML();
输出:
<input type="hidden" name="id" value="new">