我的理解是在 PHP(v5.3 及更高版本)中使用 NOWDOC 功能,不需要转义字符。
我正在尝试查找和替换 PHP 文件中的文本。正文是:
$OldString = <<<'EOD'
<fieldset class="foobar" id="comments">
<legend><?php echo TABLE_HEADING_COMMENTS; ?></legend>
<?php echo foobar_field('comments', '45', '3'); ?>
</fieldset>
EOD;
此文本确实出现在目标 PHP 文件中,但未str_replace
找到。也没有str_pos
(我正在使用它进行测试)。
我想知道这是否是由于字符串中的特殊字符造成的,但是如果我单独执行 astrpos
或str_replace
为它们单独执行每一行,例如...
$OldString = <<<'EOD'
<?php echo zen_draw_textarea_field('comments', '45', '3'); ?>
EOD;
...按我的预期工作。
似乎是多行导致问题,但 HEREDOC 和 NOWDOC 的全部意义在于它们能够将多行文本放入一个变量中。
我的搜索和替换字符串是:
$pos = strpos($content, $OldString);
if ($pos !== false) {
...
和
$content = str_replace($OldString, $NewString, $content);
如果有任何区别,我将使用file_get_contents
.