我有这样的代码:
<?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'
我错了什么?
答案 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库。