我输入了如下:
<h2 class="role">He played and an important role</h2>
需要更换角色,但不能在课堂上。
Tricky是,它可能是class="group role something"
左右,所以我基本上只想搜索真实文本而不是html,但我需要回馈所有内容。
我使用PHP并且没有一个真正好的起点...
答案 0 :(得分:2)
最好没有解析HTML的preg_,使用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...
答案 1 :(得分: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>