所以,我正忙于一个小程序,我想替换一些数据。但数据是动态的。
我有字符串Warm Bodies (2013)
,我想摆脱(2013)只能Warm Bodies
是一切,并且(2013)
可以是一切,例如
Warm Bodies (1999)
或a random string (2011)
所以我要删除的数据总是介于()之间。
我以为我可以做到这一点,str_replace("(%?%), "", "Warm Bodies (2013)");
但我找不到一个好的解决方案。
所以,我正忙于一个小程序,我想替换一些数据。但数据是动态的。
我有字符串Warm Bodies (2013)
,我想摆脱(2013)只能Warm Bodies
是一切,并且(2013)
可以是一切,例如
Warm Bodies (1999)
或a random string (2011)
所以我要删除的数据总是介于()之间。
我以为我可以做到这一点,str_replace("(%?%), "", "Warm Bodies (2013)");
但我找不到一个好的解决方案。
使用preg_replace
参考: http: //php.net/manual/en/function.preg-replace.php。这将用新字符串替换模式
preg_replace("/\(\d+\)/","",$str);
如果不是数字:
preg_replace("/\(.*\)/","",$str);
$string = "Warm Bodies (2013)";
$result = preg_replace('/\([^\)]+\)/', '', $string);
或者,还要删除括号周围的空格:
$string = "Warm Bodies (2013)";
$result = preg_replace('/\s*\([^\)]+\)\s*/', '', $string);
这应该很好地做到这一点:
$strings = array(
'Warm Bodies (2013)',
'Warm Bodies (1999)',
'a random string (2011)',
);
$pattern = '/\s*\(\d+\)/';
foreach ($strings as $string) {
$output = preg_replace($pattern, '', $string);
var_dump($output);
}
生成的输出如下:
string(11) "Warm Bodies"
string(11) "Warm Bodies"
string(15) "a random string"
如果您有一个包含要替换值的数组,您也可以使用以下代码而不是循环:
$output = preg_replace($pattern, '', $strings);
var_dump($output);
这将生成以下数组:
array(3) {
[0]=> string(11) "Warm Bodies"
[1]=> string(11) "Warm Bodies"
[2]=> string(15) "a random string"
}
我猜您只想替换标题中的最后一组括号,在这种情况下,您不需要使用正则表达式,只需在最后一个左括号之后剪切字符串即可。
$title = "Warm Bodies (2013)";
$newTitle = substr($title, 0, strrpos($title, "(") - 1);