1

サブストリングを使用してブログ投稿を展開/凝縮しています。2番目のサブストリングは、ボタンが押されたときにアクティブになるdivタグ内にあります(したがって、両方のサブストリングを連結します)

コードは次のようになります。

<?php echo substr($f2, 0, 50);?>
<div id="<?php echo $f4; ?>" class = "hidden">
<?php echo substr($f2, 0, 5000);?></div>

ただし、私の問題は、ブログ投稿にhtmlタグ(<\ li>、<\ p>など)が含まれていて、最初のサブストリングがそのタグセットの終了前に終了する場合、明らかに大きなフォーマットの問題が発生することです。現在の方法を使用してこれを回避する方法はありますか、それともXMLスタイルシートのようなものを使用する必要がありますか(その場合はガイドしてください)

編集:

DOMDocumentを使用してリクエストを半完了しました。

$second = substr($f2, 50, 5000);
$dom= new DOMDocument();
    $dom->loadHTML($second);      
    $xpath = new DOMXPath($dom);
    $body = $xpath->query('/html/body');
$secondoutput = ($dom->saveXml($body->item(0)));


$first = substr($f2, 0, 50);
$dom= new DOMDocument();
    $dom->loadHTML($first);      
    $xpath = new DOMXPath($dom);
    $body = $xpath->query('/html/body');
$firstoutput = ($dom->saveXml($body->item(0)));

これは、2番目のサブトリングが呼び出されたときに、精製されたために以前のフォーマットがなくなったことを除いて、機能します。2番目のサブストリングが呼び出されたときに前のHTMLタグを再アタッチする方法はありますか?

4

3 に答える 3

0

この問題にはさまざまな解決策がありますが、substr特に適切ではありません(あなたが述べたように)。正規表現、またはHTMLパーサーを使用できます。

先に進んで、この質問から解決策をコピーしてください。

于 2012-06-01T12:15:22.130 に答える
0

HTML コード全体を DOMDocument またはSimpleHTMLDOMで解析し、投稿が十分に短くなるまで最後の要素を削除したい場合があります。

于 2012-06-01T12:02:57.333 に答える
0

Tidyを使用して、切り捨てられた HTML を修正することができます。

于 2012-06-01T12:00:47.957 に答える