0

我有输入,例如:

<h2 class="role">He played and an important role</h2>

并且需要替换角色,但不在类中。

棘手的是,它可能是class="group role something"左右,所以我基本上只想搜索真实文本而不是 html,但我需要归还所有内容。

我在 PHP 中并没有一个真正好的起点......

4

2 回答 2

2

最好不要 preg_ 来解析 HTML,使用 dom:

$input = '<h2 class="role">He played and an important role</h2>';

$dom = new domDocument('1.0', 'utf-8'); 
$dom->loadHTML($input); 
$dom->preserveWhiteSpace = false; 

$element = $dom->getElementsByTagName('h2'); // <--- change tag name as appropriate
$value = $element->item(0)->nodeValue;

// change $value here...
于 2013-02-28T16:26:57.747 回答
1

最好使用 DOM 来操作 HTML,但这里有一个正则表达式解决方案。

如果>出现在<字符串前面,则不会进行替换。

$input = '<h2 class="role">He played and an important role</h2>';

$input = preg_replace( '/role(?![^<>]*>[^<>]*(?:<|$))/', 'new role', $input );

echo $input;    
// <h2 class="role">He played and an important new role</h2>
于 2013-02-28T16:50:50.890 回答