2016-09-22 2 views
6

<または>をPHPを使ってHTMLファイルに挿入する方法はありますか?ここでは、コードPHPを使ってhtmlファイルに "<"を挿入

<?php 
$custom_tag = $searchNode->nodeValue = "<"; 
$custom_tag = $searchNode->setAttribute("data-mark", $theme_name); 
$custom_tag = $dom->saveHTML($searchNode); 
$root = $searchNode->parentNode; 
$root->removeChild($searchNode); 
$test = $dom->createTextNode("<?php echo '$custom_tag'; ?>"); 

$root->appendChild($test); 
$saved_file_in_HTML = $dom->saveHTML(); 
$saved_file = htmlspecialchars_decode($saved_file_in_HTML); 
file_put_contents("test.html", $saved_file); 

の一部であり、問​​題は、私は法の上使用して&lt;を取得し、私は<がしたいということです。

EDIT: 全コード:

if($searchNode->hasAttribute('data-put_page_content')) { 
    $custom_tag = $searchNode->nodeValue = "'; \$up_level = null; \$path_to_file = 'DATABASE/PAGES/' . basename(\$_SERVER['PHP_SELF'], '.php') . '.txt'; for(\$x = 0; \$x < 1;) { if(is_file(\$up_level.\$path_to_file)) { \$x = 1; include(\$up_level.\$path_to_file); } else if(!is_file(\$up_level.\$path_to_file)) { \$up_level .= '../'; } }; echo '"; 
    $custom_tag = $searchNode->setAttribute("data-mark", $theme_name); 
    $custom_tag = $dom->saveHTML($searchNode); 
    $root = $searchNode->parentNode; 
    $root->removeChild($searchNode); 
    $test = $dom->createTextNode("<?php echo '$custom_tag'; ?>"); 

    $root->appendChild($test); 
    $saved_file_in_HTML = $dom->saveHTML(); 
    $saved_file = htmlspecialchars_decode($saved_file_in_HTML); 
    file_put_contents("../THEMES/ACTIVE/". $theme_name ."/" . $trimed_file, $saved_file); 
    copy("../THEMES/ACTIVE/" . $theme_name . "/structure/index.php", "../THEMES/ACTIVE/" . $theme_name ."/index.php"); 
    header("Location: editor.php");   

} 

FINAL EDIT: あなたがPHPのDOMメソッドを使用して><を持つようにしたい場合は、それがcreateTextNode()メソッドを使用して取り組んでいます。

+0

'html_entity_decode'。.. ...機能に建てられたこのPHPを使用 – FullStack

+0

' $テスト= $、DOM>はcreateTextNode( ""); ' – FullStack

+0

それが動作しません。関数がhtmlファイルに挿入する前にそれ自身を動作させる必要があるかもしれませんか? – Slit

答えて

-1

私が正しく理解していれば、まず<と>を使用することができます。 HTMLとしてレンダリングする必要があります。いくつかのコードを保存するかもしれません。それが動作するかどうか私に教えてください。

0

元の質問は、PHPを使ってHTMLタグを作成する方法に関係するように思われるので、私はその質問に対処します。 htmlentities()を使用することをお勧めしますが、主な目的はコードを保護して、悪意のあるユーザーがセキュリティ問題を引き起こす可能性のあるjavascriptやその他のタグを挿入しないようにすることです。この場合、HTMLを生成する唯一の方法はHTMLを作成することであり、PHPはこの偉業を達成するために少なくとも3つの方法を提供します。

あなたは次のようなコードを記述することがあります。

<?php 

define("LF_AB","<"); 
define("RT_AB",">"); 
echo LF_AB,"div",RT_AB,"\n"; 
echo "content\n"; 
echo LF_AB,"/div",RT_AB,"\n"; 

コードは、いくつかの最小限の内容でのdivタグを開始し、終了生成します。定義はオプションです。つまり、左角のタグ文字を生成するためにdefine()を使用する代わりに、より簡単な方法でコードを書くことができます(<?php echo "<"; ?>)。 1は、このようにHTMLを生成するには慎重である場合

しかし、その後、あなたもがhtml_entity_decodeを使用することがあります。

<?php 
define("LF_AB",html_entity_decode("<")); 
define("RT_AB",html_entity_decode(">")); 
echo LF_AB,"div",RT_AB,"\n"; 
echo "content\n"; 
echo LF_AB,"/div",RT_AB,"\n"; 

をこの例では無害HTMLエンティティをがhtml_entity_decodeする引数を処理した後、左側のHTMLにそれらを変換し、直角の文字になります。次のように

代わりに、あなたはまた、でも、既存のHTMLページで、PHPでDOMを利用することができます:

<?php 
function displayContent() 
{ 
    $dom = new DOMDocument(); 
    $element = $dom->createElement('div', 'My great content'); 
    $dom->appendChild($element); 
    echo $dom->saveHTML(); 
} 
?> 

<!DOCTYPE html> 
<html> 
<head> 
<title>Untitled</title> 
<style> 
div { 
    background:#ccbbcc; 
    color:#009; 
    font-weight:bold; 
} 
</style> 
</head> 
<body> 

<?php displayContent(); ?> 

</body> 
</html> 

注:その名に忠実ドムメソッドはcreateTextNodeは、テキストではなくHTMLを作成し、すなわち、ブラウザは、付加的な意味を持たないテキストとして右および左の角度文字を解釈するだけである。

関連する問題