0

メッセージはフォームを介して送信されます。通常のテキストだけでなく、htmlも含めることができます。

すなわち:

Why this code doesn't work for me?

<script type="text/javascript">
    var _gaq = _gaq || [];

    _gaq.push(['_setAccount', 'UA-XXXXX-X']);

    _gaq.push(['_trackPageview']);

    (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
</script>

prehtml要素をタグで囲みたいです。

すなわち

Why this code doesn't work for me?

<pre>
    <script type="text/javascript">
        var _gaq = _gaq || [];

        _gaq.push(['_setAccount', 'UA-XXXXX-X']);

        _gaq.push(['_trackPageview']);

        (function() {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();
    </script>
</pre>

私は以前にphpチャットルームでそれについて尋ねました、そしてこの質問の答えの作者は解決策を読むことを提案しました:php DOMDocument:フォーム要素の完全な変換?ラッピングと削除?

この例では、いくつかのことを除いてすべてが完璧です。明らかにそれ自体を除いて、html要素をラップする必要がありpreます。

  1. 要素が折りたたまれている場合は、外側の要素のみをラップします。
  2. それらが分離している場合は、それぞれをラップします。
  3. 開いているタグしかない場合は、それだけをラップします(閉じるタグで修正する必要はありません)。

誰かがこの質問の解決策について考えられるアイデアはありますか?助けてくれるすべての人に事前に感謝します。

4

1 に答える 1

0

DOMDocument適切に形成されていない HTML をどれだけうまく処理できるかはわかりません。また、メッセージに開始タグのない終了タグが含まれていると、おそらくエラーが発生します。しかし、次のことからアイデアが得られると思います...

メッセージ全体をたとえば a でラップして、div解析可能にします。次に、文字列を DOMDocument にロードします。リンクされた回答の like を使用DOMXPathして、作成した div 内の最上位の要素を見つけ、それらを次のようにラップしpreます。

$dom = new DOMDocument();
$dom->loadHTML("<div>$msg</div>");

$xpath = new DOMXPath($dom);
$query = $xpath->query("body/div/*");
于 2013-02-01T14:20:25.330 に答える