ポイントに直接
echo str_replace('</h3><table','<?php echo 'Hello World!'; ?>',$doc->saveHTML());
上記のコードで、php コード ( <?php echo 'Hello World!'; ?>
) は実行されますか?
いいえ、あなたのコードは実行されませんが、アポストロフィをエスケープしたいと考えています。PHPで文字列として直接入力する場合は、コード内の のすべてのインスタンスを'
に置き換える必要があります。\'
str_replace('</h3><table', '<?php echo \'Hello World!\'; ?>', $doc->saveHTML());
コードが既に変数に含まれている場合や、ファイルから読み込まれている場合などは、何もエスケープする必要はありません。
PHP コードを直接入力し、何もエスケープしたくない場合は、HEREDOC 構文を使用できます。
$str = <<<EOD
<?php echo 'Hello World!'; ?>
EOD;
echo str_replace('</h3><table', $str, $doc->saveHTML());
現在、引用符 (""
または''
)内のすべてが文字列であり、実行されません。したがって、コードを実行したい場合は、引用符で囲まないでください。これは では簡単に説明できませんがecho
、これはただのサンプルであると既に述べたので、代わりにrand()
関数を使用したいと仮定しましょう。
この場合、これを行いたくありません。
str_replace('</h3><table', '<?php echo rand(); ?>', $doc->saveHTML());
しかし、必要なのは次のとおりです。
str_replace('</h3><table', rand(), $doc->saveHTML());
str_replace
最後の問題は、関数を呼び出す前にコードを実行する必要があることです。これは、実行したいコードがたくさんある場合に便利です。
$replacement = rand();
str_replace('</h3><table', $replacement, $doc->saveHTML());
結果もエコーされる関数にエコーステートメントを入れるのは非常に奇妙です。コードを実際に変数に入れて、関数で置き換えます。
$replacement = 'Hell0 World';
echo str_replace('</h3><table', $replacement, $doc->saveHTML());
置換変数は、コースから適切にエスケープされていれば、必要なものすべてが存在する可能性があります。