次のような入力があります。
<h2 class="role">He played and an important role</h2>
役割を置き換える必要がありますが、クラスでは置き換えられません。
トリッキーなのは、それがそうかもしれないということですclass="group role something"。したがって、私は本質的にHTMLではなく実際のテキストのみを検索したいのですが、すべてを返す必要があります。
私はPHPを使用していて、本当に良い出発点がありません...
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...
HTMLを操作するにはDOMを使用する方が良いですが、ここに正規表現の解決策があります。
文字列の>前に表示されている場合は、置換されません。<
$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>