私の理解では、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
(テストに使用しています)。
これは文字列の特殊文字によるものなのだろうかと思いましたが、たとえば、個別にstrpos
またはを実行すると、各行が見つかります...str_replace
$OldString = <<<'EOD'
<?php echo zen_draw_textarea_field('comments', '45', '3'); ?>
EOD;
...期待どおりに動作します。
問題の原因は複数行にあるようですが、HEREDOC と NOWDOC の要点は、複数行のテキストを 1 つの変数に配置できるようにすることです。
私の検索文字列と置換文字列は次のとおりです。
$pos = strpos($content, $OldString);
if ($pos !== false) {
...
と
$content = str_replace($OldString, $NewString, $content);
違いがある場合は、を使用してファイルからテキストを取得していますfile_get_contents
。