如标题所示,我试图使用preg_replace
来删除不在括号之间的所有内容。删除除括号之外的字符串中的所有内容
例子:
$item = "We are all words that don't matter! (We do matter!)";
这应该然后返回
$item = "We do matter!";
如标题所示,我试图使用preg_replace
来删除不在括号之间的所有内容。删除除括号之外的字符串中的所有内容
例子:
$item = "We are all words that don't matter! (We do matter!)";
这应该然后返回
$item = "We do matter!";
根本就作为遵循:
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;
这里是工作示例:
就是这样。
这实际上运行得非常好,虽然它不使用preg_match,但它非常方便!谢谢! –
我很高兴它帮助你,请接受这个答案,这将是非常感谢:) –
您可以使用正则表达式:[^(]*\(([^)]+)\)[^()]*
您可以在这里找到一个交代: 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
你的'preg_replace'尝试了什么? – chris85
我试过“/*\((.*?)\).*/”,这对我的大部分字符串都没有效果。 –
@ObsidianAge我正试图做相反的事情。 –