0

いくつかのマークアップを含む大きな文字列があり、fpdf で動作するように変更したいと考えています。

<span style="text-decoration: underline;">some text</span>

ここのタグを次のように置き換える必要があります

<i>some text</i>

ただし、単純な str_replace(); 置き換えてはならないスパンタグがあるため、機能しません。見つけられるものを作る必要がある<span style="text-decoration: underline;">

次に出現するものを探し、それを</span>置き換えるだけです。これを行う方法については、少しも手がかりがありません。http://us.php.net/strposを見てきましたが、それを実装する方法と、それが解決策になるかどうかはわかりません。誰かが私にいくつかの指針を与えることができますか?

ありがとう。

4

2 に答える 2

0
$dom = new domDocument;
$dom->loadHTML($html); 
$spans = $dom->getElementsByTagName('span');
foreach ($spans as $node){
    $text = $node->textContent;
    $node->removeChild($node->firstChild);
    $fragment = $dom->createDocumentFragment();
    $fragment->appendXML('<i>'.$text.'</i>');
    $node->appendChild($fragment);
}
$out = preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML()));
于 2013-07-03T10:47:09.253 に答える