0

我有这个内容“Lorem ipsum dolor sit amet,[Hello world] consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis”。
我想删除任何包裹的东西,[]
所以应该删除这个内容的结果[Hello world]
像这样

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

4

2 回答 2

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;

键盘示例

于 2012-09-16T06:08:14.447 回答
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.
  • 在这种情况下要意识到的重要一点是,您需要使用 a\来转义[and]字符,因为它们在正则表达式中具有特殊含义。关于正则表达式的 Wikipedia 条目有一个部分介绍了语法并涵盖了其他元字符。
  • 另一个考虑因素是您应该使用+非贪婪匹配而不是*因为如果您的输入是:

    $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.
    
于 2012-09-16T06:24:19.487 回答