所以,我忙于一个小程序,我想替换一些数据。但数据是动态的。
我有字符串Warm Bodies (2013)
,我想摆脱(2013)
只有Warm Bodies
可以是所有内容,(2013)
可以是所有内容
Warm Bodies (1999)
或a random string (2011)
因此,我要删除的数据始终位于()。
我以为我可以用str_replace("(%?%), "", "Warm Bodies (2013)");
做到这一点,但我找不到一个好的解决方案。
答案 0 :(得分:3)
使用preg_replace
参考:http://php.net/manual/en/function.preg-replace.php。这将用新字符串
preg_replace("/\(\d+\)/","",$str);
如果不是数字:
preg_replace("/\(.*\)/","",$str);
答案 1 :(得分:1)
$string = "Warm Bodies (2013)";
$result = preg_replace('/\([^\)]+\)/', '', $string);
或者,还要删除括号周围的空格:
$string = "Warm Bodies (2013)";
$result = preg_replace('/\s*\([^\)]+\)\s*/', '', $string);
答案 2 :(得分:0)
我想你只想替换标题中的最后一组括号,在这种情况下你不需要使用正则表达式,只需在最后一个左括号后剪切字符串。
$title = "Warm Bodies (2013)";
$newTitle = substr($title, 0, strrpos($title, "(") - 1);
答案 3 :(得分:0)
这应该很好:
$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"
}