2016-06-22 6 views
0

私はノード全体の値を保持するコード要素が好きです。しかしそれは部分を失う:'<?php $this->'。おそらく、その部分をhtmlタグとして取得します。私は知らない。 スニペットを参照してください:DOMDocumentはPHPオープンタグの近くでいくつかのコードを失います

<?php 
$text = '<div><code><?php $this->goal = \'żźćłóąę\';</code></div>'; 
$dom = new \DOMDocument(); 
$dom->loadHTML(mb_convert_encoding($text, 'HTML-ENTITIES', "UTF-8")); 
$codeElements = $dom->getElementsByTagName('code'); 
foreach($codeElements as $elem) 
    var_dump($elem->nodeValue); 

結果は次のとおりです。

`string(24) "goal = 'żźćłóąę';"` 

が、これをachiveする方法

string(37) "<?php $this->goal = 'żźćłóąę';" 

すべきですか?

オンライン:

https://3v4l.org/d6DFmはあなたに私の質問には、いくつかの説明が必要いくつかのコメントの後

編集

ありがとうございます。 ? この

< PHPの$ this - >目標= 'żźćłóąę';

は、PHPインタープリタで解析しないでください。これはコードプレゼンテーションとして表示する必要があります。テキスト全体、行全体を文字列として表示する必要があります。 phpタグ、変数、矢印も開きます。

+2

のように試してみてください。 PHPは有効なhtmlではありません。 PHPコードブロックを含むhtmlを読み込むことはできませんし、ゴミ箱に入れないようにしてください。 domは壊れた/無効なhtmlタグとして ''を見て、それを核にします。 –

+0

はい。動作しません。 PHP変数を出力したい場合は、PHPタグ内でphpタグを開くことはできません。 – Phiter

+0

文字列として見たい。これはコードを表示するためのものです。 PHPブロックを解析しないでください。 – trzczy

答えて

0

が予想されることだ。この

<?php 
$text = '<div><code><?php $this->goal = \'żźćłóąę\';</code></div>'; 
$text = str_replace("<?","&lt;?",$text); 
$dom = new \DOMDocument(); 
$dom->loadHTML(mb_convert_encoding($text, 'HTML-ENTITIES', "UTF-8")); 
$codeElements = $dom->getElementsByTagName('code'); 
foreach($codeElements as $elem) 
    var_dump($elem->nodeValue); 
+0

しかし、私のテキストは '

goal = "żźćłóąę";
'です。私はデータベースからそれを得る。私はデータベースにそのようなテキストをもっと持っています。彼らはPHPコードの記事を持った記事です。彼らはすべて通常のphpタグを開きます。 – trzczy

+0

コードが更新されました。新しいコードを試してみてください – Suyash

関連する問題