【问题标题】:How to make ereg_replace replacement work如何使 ereg_replace 替换工作
【发布时间】:2013-09-08 09:39:03
【问题描述】:

我有这个代码:

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

【问题讨论】:

  • $sp_data 长什么样子?
  • for($i = 0; $i
  • 这并不能告诉我任何事情。我的意思是乱扔垃圾,那个字符串是什么样的?
  • 谢谢putvande,下面的答案就是解决方案。

标签: php regex pcre


【解决方案1】:

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

如果设置了此修饰符,则模式中的点元字符匹配 所有字符,包括换行符。没有它,换行符被排除在外。 这个修饰符等价于 Perl 的 /s 修饰符。负类 例如 [^a] 总是匹配换行符,独立于 这个修饰符的设置。

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

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

【讨论】:

  • 谢谢它的工作,但我只是改变一件事:“
猜你喜欢
  • 2011-06-25
  • 2011-04-08
  • 2014-01-10
  • 2016-02-05
  • 2013-06-13
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 2014-03-18
相关资源
最近更新 更多