0

我有这个代码:

if ($this->serv == "shoutcast")
    $sp_data = ereg_replace("^.*<SHOUTCASTSERVER", "<SHOUTCASTSERVER", $sp_data);

它给了我正常的错误:Deprecated: Function ereg_replace() is deprecated in

我替换为:

if ($this->serv == "shoutcast")
    $sp_data = preg_replace("/^.*<SHOUTCASTSERVER/", "/<SHOUTCASTSERVER/", $sp_data);

现在没有错误,但它不能按预期工作:http: //img833.imageshack.us/img833/4409/8lck.png

处理错误:http: //img89.imageshack.us/img89/2669/6wft.png

4

1 回答 1

0

正则表达式应该可以工作。我看到的唯一可能的问题是您之前有新行<SHOUTCASTSERVER,请尝试使用s修饰符

如果设置了此修饰符,则模式中的点元字符匹配所有字符,包括换行符。没有它,换行符被排除在外。这个修饰符等价于 Perl 的 /s 修饰符。诸如 [^a] 之类的否定类始终匹配换行符,与此修饰符的设置无关。

preg_replace("/^.*<SHOUTCASTSERVER/s", "<SHOUTCASTSERVER", $sp_data);

如果您正在使用 XML,您应该考虑使用XML 操作类,例如(我个人最喜欢的)DOM

于 2013-09-08T09:43:46.097 回答