不,你的代码不会被执行,但你想escape the apostrophes。如果您在 PHP 中直接将 string 键入为 string ,则应在代码中将 ' 的每个实例替换为 \':
str_replace('</h3><table', '<?php echo \'Hello World!\'; ?>', $doc->saveHTML());
如果代码已经在变量中、从文件中加载等,则无需转义。
如果你想直接输入你的 PHP 代码并且你不想转义任何东西,你可以使用HEREDOC syntax:
$str = <<<EOD
<?php echo 'Hello World!'; ?>
EOD;
echo str_replace('</h3><table', $str, $doc->saveHTML());
现在,引号中的所有内容("" 或 '')都是 string,并且将不会被执行。所以如果你想让代码被执行,不要把它放在引号里。这不能用echo 轻松解释,但你already told it's just a sample,所以假设你想使用rand() function。
在这种情况下,您不想这样做:
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());