如何使ereg_replace替换工作

时间:2013-09-08 09:39:04

标签: php regex pcre

我有这段代码:

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

1 个答案:

答案 0 :(得分:0)

正则表达式应该有效。我看到的唯一可能问题是您在<SHOUTCASTSERVER之前有新行,请尝试使用s modifier

  

如果设置了此修改器,则模式中的点元字符匹配   所有字符,包括换行符。没有它,排除了换行符。   此修饰符等效于Perl的/ s修饰符。负面的一类   例如[^ a]始终匹配换行符,独立于换行符   设置此修饰符。

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

如果你正在使用XML,你应该考虑使用XML manipulation class,例如(我个人最喜欢的)DOM