混合str_replace和正则表达式?

问题描述 投票:0回答:2

我想替换一个字符串,例如:

<input type="hidden" name="id" value="12345" />

但我遇到的问题是值(12345)每次都不同,所以我该如何做我想做的事情呢? ..我猜正则表达式'但没有线索

php regex str-replace
2个回答
6
投票
preg_replace('/\<input type="hidden" name="id" value="[0-9]+" \/\>/is', '', $source)

0
投票

使用 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">
© www.soinside.com 2019 - 2024. All rights reserved.