PHP只在特定字符之间保留文本

PHP只在特定字符之间保留文本,php,regex,Php,Regex,我有许多字符串如下所示: [additional-text Sample text...] Sample text... 最后总是有一个左括号+附加文本+单个空格和一个右括号,我需要将它们全部删除,以便最后的字符串如下所示: [additional-text Sample text...] Sample text... 非常感谢您提供的任何帮助或指导。获取您想要作为捕获组保留的子字符串: ^\[\S+\s([^]]+)\]$ 现在在替换中,使用唯一捕获的组\1 获取要作为捕获组保留的子

我有许多字符串如下所示:

[additional-text Sample text...]
Sample text...
最后总是有一个左括号+附加文本+单个空格和一个右括号,我需要将它们全部删除,以便最后的字符串如下所示:

[additional-text Sample text...]
Sample text...

非常感谢您提供的任何帮助或指导。

获取您想要作为捕获组保留的子字符串:

^\[\S+\s([^]]+)\]$
现在在替换中,使用唯一捕获的组
\1


获取要作为捕获组保留的子字符串:

^\[\S+\s([^]]+)\]$
现在在替换中,使用唯一捕获的组
\1

您可以使用:

$re = '/\[\S+\s|\]/'; 
$str = "[additional-text Sample text...]"; 

$result = preg_replace($re, '', $str);
//=> Sample text...
您可以使用:

$re = '/\[\S+\s|\]/'; 
$str = "[additional-text Sample text...]"; 

$result = preg_replace($re, '', $str);
//=> Sample text...

使用
substr
删除前17个字符。使用正则表达式删除最后两个:

$val = '[additional-text Sample text...]';
$text = preg_replace('#\]$#', '', substr($val, 17));

使用
substr
删除前17个字符。使用正则表达式删除最后两个:

$val = '[additional-text Sample text...]';
$text = preg_replace('#\]$#', '', substr($val, 17));

您可以使用此选项获取文本块中的所有匹配项:

preg_match_all("/\[additional-text (.*?)\]/",$text,$matches);
您的所有文本将以$matches[1]格式显示。因此,这将是:

$text = "[additional-text Sample text...]dsfg fgfd[additional-text Sample text2...] foo bar adfd as ff";
preg_match_all("/\[additional-text (.*?)\]/",$str,$matches);
var_export($matches[1]);

您可以使用此选项获取文本块中的所有匹配项:

preg_match_all("/\[additional-text (.*?)\]/",$text,$matches);
您的所有文本将以$matches[1]格式显示。因此,这将是:

$text = "[additional-text Sample text...]dsfg fgfd[additional-text Sample text2...] foo bar adfd as ff";
preg_match_all("/\[additional-text (.*?)\]/",$str,$matches);
var_export($matches[1]);
你也可以这样做

$a = '[additional-text Sample text...]';
$a= ltrim($a,"[additional-text ");
echo $a= rtrim($a,"]");
你也可以这样做

$a = '[additional-text Sample text...]';
$a= ltrim($a,"[additional-text ");
echo $a= rtrim($a,"]");

在正则表达式中不需要,请使用:

其中,
17
[附加文本
的长度,
18
与最后一个
]的长度相同+1

正则表达式解决方案也是基本的:

^\[additional-text (.*)]$
或者-如果结束前没有
]

^\[additional-text ([^]]*)]$
并替换为
$1
反向参考。请参阅,下面是一个:

图案详情:

  • ^
    -字符串的开头
  • \[
    -文字
    [
  • 附加文本
    -文字文本
  • (.*)
    -除换行符以外的零个或多个字符,尽可能多至
  • ]$
    -字符串末尾的一个
    ]

    • 在正则表达式中不需要,请使用:

      其中,
      17
      [附加文本
      的长度,
      18
      与最后一个
      ]的长度相同+1

      正则表达式解决方案也是基本的:

      ^\[additional-text (.*)]$
      
      或者-如果结束前没有
      ]

      ^\[additional-text ([^]]*)]$
      
      并替换为
      $1
      反向参考。请参阅,下面是一个:

      图案详情:

      • ^
        -字符串的开头
      • \[
        -文字
        [
      • 附加文本
        -文字文本
      • (.*)
        -除换行符以外的零个或多个字符,尽可能多至
      • ]$
        -字符串末尾的一个
        ]

      请检查我是否遗漏了任何内容,以及是否一切正常。如果您需要更多帮助,请不要犹豫,在这里发表评论。请检查我是否没有遗漏任何内容,以及是否一切都清楚。如果您需要更多的帮助,请不要犹豫,在这里发表评论。非常优雅和首选的解决方案!非常优雅和首选的解决方案!