搜索并从内容中删除?

时间:2012-09-16 06:04:46

标签: php

我有这个内容" Lorem ipsum dolor sit amet, [Hello world] consectetur adipiscing elit。 Mauris ornare luctus diam sit amet mollis。"
我想删除[]所包裹的任何内容,因此应删除此内容的结果 [Hello world]
如下所示

  

Lorem ipsum dolor坐下来,精神上的精神。 Mauris ornare luctus diam sit amet mollis。

2 个答案:

答案 0 :(得分:4)

使用preg_replace

$string = 'Lorem ipsum dolor sit amet,[Hello world] consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.';
$newString = preg_replace('/\[.+?\]/', '', $string);
echo $newString;

Codepad Example

答案 1 :(得分:0)

preg_replace是要走的路。它使用正则表达式匹配输入字符串中的模式(第三个参数),并返回一个字符串,用于替换与模式(第一个参数)匹配的任何内容与替换字符串(第二个参数)。

$input = "Lorem ipsum dolor sit amet,[Hello world] consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.";
$output = preg_replace('/\[.+\]/', '', $input);
echo $output;

会给你:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.
  • 在这种情况下要意识到的一件重要事情是,您需要使用\来转义[]字符,因为它们在正则表达式中具有特殊含义。关于正则表达式的维基百科条目有一个超过syntax的部分,并涵盖其他元字符。
  • 另一个考虑因素是,您应该使用+代替*进行非同意匹配,因为如果您输入的是:

    $input = "Lorem ipsum dolor sit amet,[Hello world] consectetur [test] adipiscing elit. Mauris ornare luctus diam sit amet mollis.";
    

    然后你的输出将删除你可能不想要的consectetur并给你:

    Lorem ipsum dolor sit amet, adipiscing elit. Mauris ornare luctus diam sit amet mollis.