次のようなコードがあります。
<?php
$first = '<?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE';
echo ereg_replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "UPSS", $first);
?>
うまくいきません。取得したい: 「UPSS TEST MESSAGE」
私は何を間違えたのですか?
次のようなコードがあります。
<?php
$first = '<?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE';
echo ereg_replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "UPSS", $first);
?>
うまくいきません。取得したい: 「UPSS TEST MESSAGE」
私は何を間違えたのですか?
さて、ここにいくつかのことがあります:
の代わりに宣言$first
していますが、二重引用符をエスケープしています。つまり、リテラル文字列(バックスラッシュ付き) になります。'
"
<?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE
$first = '<?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE';
// ^ ^ ^ ^ ^ ^
// You don't need to escape " when using ' to create the string.
代わりに
$first = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE";
// ^ ^ ^ ^ ^ ^
// We escape because we've used " to create the string
また
$first = '<?xml version="1.0" encoding="UTF-8"?> TEST MESSAGE';
// ^ ^ ^ ^ ^ ^
// We do not escape, because we used ' to create the string, and therefore only need to escape '.
正しいだろう
を使用していますereg_replace
。なんで?まず第一に、それはあなたが使用していないように見える正規表現に使用されています.第二に、それは長い間非推奨であり、第三に、正規表現を供給していません. また、置換を"
's で指定しています。つまり、バックスラッシュなしで文字列を置換しているため、一致を見つけることができません (\"
これは と同じではないことに注意してください"
)。今すぐ正規表現を使用したい場合は、 を参照してくださいpreg_replace
。ただし、str_replace
代わりに使用したい場合は、問題を確認してください。
echo str_replace('<?xml version="1.0" encoding="UTF-8"?>', 'UPSS', $first);
str_replace() を使用してみてください。コンテンツを解析する目的がある場合は、XPath ライブラリを使用する必要があります。