Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除字符串中括号中特定值以外的所有内容_Php_Regex_Preg Match - Fatal编程技术网

Php 删除字符串中括号中特定值以外的所有内容

Php 删除字符串中括号中特定值以外的所有内容,php,regex,preg-match,Php,Regex,Preg Match,我试图找到一个解决方案,如何删除括号中特定值之外的所有内容,包括括号中的值。 这就是我的意思。我有这根绳子 $str = "[:de]Some german text[:en]Some English text[:]"; 我想要实现的是在[:de]和[:en]之间获得文本,并删除所有其他内容,因此结果必须是 $str = "Some german text"; 我想应该是一些preg_匹配或一些regex解决方案,但我所发现的是,如何删除中间的文本,而不是保留中间的文本并删除其他所有内容 欢

我试图找到一个解决方案,如何删除括号中特定值之外的所有内容,包括括号中的值。 这就是我的意思。我有这根绳子

$str = "[:de]Some german text[:en]Some English text[:]";
我想要实现的是在[:de]和[:en]之间获得文本,并删除所有其他内容,因此结果必须是

$str = "Some german text";
我想应该是一些preg_匹配或一些regex解决方案,但我所发现的是,如何删除中间的文本,而不是保留中间的文本并删除其他所有内容

欢迎任何意见。

我想

(?<=\[:de\]).*?(?=\[:en\])

如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况


正则表达式电路 可视化正则表达式:


多亏了艾玛的回答,这就是我提出的解决方案

$re = '/(?<=\[:de\]).*?(?=\[:en\])/s';
$result = preg_match($re, $str, $match);
$result = $match[0];

$re='/(?谢谢@Emma,这帮了我很大的忙。我会根据你的回答,用一个简单的解决方案来编辑我的答案。这个问题应该回滚并发布你自己的答案。
array(3) {
  [0]=>
  array(1) {
    [0]=>
    string(18) "Some german text 1"
  }
  [1]=>
  array(1) {
    [0]=>
    string(18) "Some german text 2"
  }
  [2]=>
  array(1) {
    [0]=>
    string(18) "Some german text 3"
  }
}
$re = '/(?<=\[:de\]).*?(?=\[:en\])/s';
$result = preg_match($re, $str, $match);
$result = $match[0];