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 测试信息”

我做错了什么?

4

2 回答 2

3

好的,这里有几件事:

第一个问题

$first使用'而不是"'s 进行声明,但您正在转义双引号,这意味着您最终会得到一串<?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);
于 2013-01-25T09:28:24.693 回答
0

尝试使用 str_replace()。如果你有解析内容的目的,你应该使用 XPath 库。

于 2013-01-25T09:28:44.273 回答