0

次のような入力があります。

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

役割を置き換える必要がありますが、クラスでは置き換えられません。

トリッキーなのは、それがそうかもしれないということですclass="group role something"。したがって、私は本質的にHTMLではなく実際のテキストのみを検索したいのですが、すべてを返す必要があります。

私はPHPを使用していて、本当に良い出発点がありません...

4

2 に答える 2

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...
于 2013-02-28T16:26:57.747 に答える
1

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>
于 2013-02-28T16:50:50.890 に答える