ereg_replace - 带正斜杠的字符串

时间:2013-01-25 09:25:16

标签: php

我有这样的代码:

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

我错了什么?

2 个答案:

答案 0 :(得分:3)

好的,这里有几件事:

第一个问题

您使用$first而不是'声明",但是您正在逃避双引号,这意味着您最终会得到一个<?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE字符串{ {1}}(带反斜杠)。

$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。为什么?首先,它用于正则表达式,你似乎没有使用它,其次它已被弃用很长一段时间,第三,你没有正在使用正则表达式。你还指定替换使用",这意味着您正在替换字符串WITHOUT反斜杠,因此无法找到匹配项(请记住\""不同)。如果您想立即使用正则表达式,请查看preg_replace,但是您要使用str_replace来查找问题:

echo str_replace('<?xml version="1.0" encoding="UTF-8"?>', 'UPSS', $first);

答案 1 :(得分:0)

尝试使用str_replace()。 如果您的目标是解析内容,则应使用XPath库。