如標題所示,我試圖使用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我正試圖做相反的事情。 –