0

次のようなコードがあります。

<?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」

私は何を間違えたのですか?

4

2 に答える 2

3

さて、ここにいくつかのことがあります:

第1の問題

の代わりに宣言$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 '.

正しいだろう

2番目の問題

を使用していますereg_replace。なんで?まず第一に、それはあなたが使用していないように見える正規表現に使用されています.第二に、それは長い間非推奨であり、第三に、正規表現を供給していません. また、置換を"'s で指定しています。つまり、バックスラッシュなしで文字列を置換しているため、一致を見つけることができません (\"これは と同じではないことに注意してください")。今すぐ正規表現を使用したい場合は、 を参照してくださいpreg_replace。ただし、str_replace代わりに使用したい場合は、問題を確認してください。

echo str_replace('<?xml version="1.0" encoding="UTF-8"?>', 'UPSS', $first);
于 2013-01-25T09:28:24.693 に答える
0

str_replace() を使用してみてください。コンテンツを解析する目的がある場合は、XPath ライブラリを使用する必要があります。

于 2013-01-25T09:28:44.273 に答える