我有很多字符串看起来像这样:
[additional-text Sample text...]
总有一个开括号+附加文本+单个空格和一个结束括号,我需要删除所有这些,以便最终的字符串看起来像这样:
Sample text...
非常感谢任何帮助或指导。
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用:
$re = '/\[\S+\s|\]/';
$str = "[additional-text Sample text...]";
$result = preg_replace($re, '', $str);
//=> Sample text...
答案 2 :(得分:1)
使用substr
删除前17个字符。使用正则表达式删除最后两个:
$val = '[additional-text Sample text...]';
$text = preg_replace('#\]$#', '', substr($val, 17));
答案 3 :(得分:1)
你可以使用它来获取文本块中的所有匹配项:
preg_match_all("/\[additional-text (.*?)\]/",$text,$matches);
所有文字都在$ match [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]);
答案 4 :(得分:1)
你也可以这样做
$a = '[additional-text Sample text...]';
$a= ltrim($a,"[additional-text ");
echo $a= rtrim($a,"]");
答案 5 :(得分:1)
正则表达式不需要使用substr
:
$s = "[additional-text Sample text...]";
echo substr($s, 17, strlen($s)-18);
其中17
的长度为[additional-text
,而18
的长度为]
的+ 1。
请参阅PHP demo
正则表达式解决方案也很基础:
^\[additional-text (.*)]$
或 - 如果在结束前没有]
:
^\[additional-text ([^]]*)]$
并替换为$1
反向引用。请参阅regex demo,此处为PHP demo:
$result = preg_replace('~^\[additional-text (.*)]$~', "$1", "[additional-text Sample text...]");
echo $result;
模式详细信息:
^
- 字符串开头\[
- 文字[
additional-text
- 文字文字(.*)
- 除了换行符之外的零个或多个字符,最多不超过]$
- 字符串末尾的]
。