-3

ポイントに直接

  echo str_replace('</h3><table','<?php echo 'Hello World!'; ?>',$doc->saveHTML());

上記のコードで、php コード ( <?php echo 'Hello World!'; ?>) は実行されますか?

4

2 に答える 2

0

いいえ、あなたのコードは実行されませんが、アポストロフィをエスケープしたいと考えています。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());
于 2013-08-01T08:04:12.750 に答える
0

結果もエコーされる関数にエコーステートメントを入れるのは非常に奇妙です。コードを実際に変数に入れて、関数で置き換えます。

$replacement = 'Hell0 World';
echo str_replace('</h3><table', $replacement, $doc->saveHTML());

置換変数は、コースから適切にエスケープされていれば、必要なものすべてが存在する可能性があります。

于 2013-08-01T08:18:13.523 に答える