我有这个代码:
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
正则表达式应该可以工作。我看到的唯一可能的问题是您在<SHOUTCASTSERVER
之前有换行符,请尝试使用s
修饰符:
如果设置了此修饰符,则模式中的点元字符匹配 所有字符,包括换行符。没有它,换行符将被排除在外。 这个修饰符等效于 Perl 的/s 修饰符。负类 例如 [^a] 始终匹配换行符,与 此修饰符的设置。
preg_replace("/^.*<SHOUTCASTSERVER/s", "<SHOUTCASTSERVER", $sp_data);
如果你正在使用XML,你应该考虑使用XML操作类,例如(我个人最喜欢的)DOM
。