删除字符串中的所有内容,但括号之间除外

时间:2017-03-22 19:40:35

标签: php regex preg-replace

正如标题所说,我尝试使用preg_replace删除括号内的所有内容。

示例:

$item = "We are all words that don't matter! (We do matter!)";

然后应该返回

$item = "We do matter!";

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:[^(]*\(([^)]+)\)[^()]*

你可以在这里找到解释: https://regex101.com/r/2d1TzV/1

您尝试提取的文本将在第1组中捕获。

这是使用该正则表达式的PHP中的示例代码:

<?php
$item = "We are all words that don't matter! (We do matter!)";
$result = preg_filter("/[^(]*\(([^)]+)\)[^()]*/", "$1", $item);
echo $result;

在线尝试:http://ideone.com/kn3kQo

答案 1 :(得分:1)

只需按照以下步骤操作:

function get_string_between($string, $start, $end){
    $string = ' ' . $string;
    $ini = strpos($string, $start);
    if ($ini == 0) return '';
    $ini += strlen($start);
    $len = strpos($string, $end, $ini) - $ini;
    return substr($string, $ini, $len);
}

$fullstring = "We are all words that don't matter! (We do matter!)";
$shortstring = get_string_between($fullstring, '(', ')');

$finalstring = "(".$shortstring.")";

echo $finalstring;

这是工作示例:

https://eval.in/759309

那就是它。

相关问题