2016-11-03 12 views
0

スクリプトは置換文字列を含むファイルを読み込み、一部のテキストに置換文字を含むpreg_replaceを作成します。考え方は、置換ファイルに有効な正規表現置換が含まれている必要があるということです。ファイルから特殊文字(「 n」など)に読み込まれた文字列を変更します

置換ファイルに、たとえば次のような単純な文字列が含まれる場合。 "xyz"、それは正常に動作します。しかし、それが "\ n"を含んでいるとき、私はそれを新しい行として扱いたいが、それはうまくいかない。テキスト内のスペースは、文字通り "\ n"で置き換えられます。

$c = file_get_contents('replacements.txt'); 
$s = preg_replace('/ /', $c, 'some text'); 
file_put_contents('output.txt', $s); 

output.txtには、テキストエディタで表示すると「some \ ntext」が含まれています。

は、だから私は、単純なif文を追加しました:

if ($c == '\n') { 
    $c = "\n"; 
} 

をそして今、それが動作します。しかし、この問題に対処するより一般的な方法があります。つまり、ファイルからの置換文字列を実際の正規表現の置き換えとして解釈しますか?将来的には、より複雑な代替品になる可能性があるからです。

答えて

0

あなたは、\t\r\x10のような、...他のエスケープシーケンスで実際に同様の問題を有することができるなど

私は解釈し、これらの文字を持っているバージョンに文字列を回すために、このソリューションをお勧めします。

$c = json_decode('"'.str_replace('"', '\"', $c).'"'); 

...置き換えは意図したとおりに動作します。

関連する問題