【问题标题】:PHP how to delete this from a string?PHP如何从字符串中删除它?
【发布时间】:2010-07-31 10:32:10
【问题描述】:

我想从字符串中删除它:

[QUOTE=*] * [/QUOTE]

.* kan be anything

谁能提供我可以使用的模式?

【问题讨论】:

  • 我需要使用引用的东西后面的文字
  • 你需要使用哪个部分?第一个 * 还是第二个?
  • 我希望你知道BBCode不是正则语言,因此不能用正则表达式解析。
  • 我需要 [/QUOTE] 之后的部分,这似乎可以工作,除非在 de quote 标签内有一个
    。然后它不;不将其识别为相同的模式...

标签: php regex bbcode


【解决方案1】:
$string = preg_replace('/\[QUOTE=[^\]]*\].*\[\/QUOTE\]/', '', $string);

【讨论】:

  • 似乎可以工作,除非在 de 引号标签内有一个
    。然后它不;不将其识别为相同的模式
  • 它应该与
    一起使用,但如果存在换行符 (\n),它将不匹配。将 's' 修饰符添加到末尾(在最后的 '/' 之后)以使其匹配换行符。但是,您可能还必须通过添加“?”来使“。*”变得不贪婪。之后。
  • 不确定(还)什么是 s 修饰符,但它起作用了:) thnx 再次
【解决方案2】:

Jhongs 的回答很完美,它会给你留下两个 * 的内容。

但是,如果您需要单独的部件,您可以进行小的调整并添加捕获组,如下所示:

if (preg_match('%\[QUOTE=([^\]]*)\](.*)\[/QUOTE\]%', $subject, $matches))
{
...
}

* 将位于 $matches[1] 和 $matches[2]。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2014-09-07
    • 2014-08-26
    • 1970-01-01
    相关资源
    最近更新 更多