0

所以,我正忙于一个小程序,我想替换一些数据。但数据是动态的。

我有字符串Warm Bodies (2013),我想摆脱(2013)只能Warm Bodies是一切,并且(2013)可以是一切,例如 Warm Bodies (1999)a random string (2011)所以我要删除的数据总是介于()之间。

我以为我可以做到这一点,str_replace("(%?%), "", "Warm Bodies (2013)");但我找不到一个好的解决方案。

4

4 回答 4

3

使用preg_replace参考: http: //php.net/manual/en/function.preg-replace.php。这将用新字符串替换模式

preg_replace("/\(\d+\)/","",$str);

如果不是数字:

preg_replace("/\(.*\)/","",$str);
于 2013-02-15T13:05:23.713 回答
1
$string = "Warm Bodies (2013)";
$result = preg_replace('/\([^\)]+\)/', '', $string);

或者,还要删除括号周围的空格:

$string = "Warm Bodies (2013)";
$result = preg_replace('/\s*\([^\)]+\)\s*/', '', $string);
于 2013-02-15T13:06:37.243 回答
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"
}
于 2013-02-15T13:17:37.403 回答
0

我猜您只想替换标题中的最后一组括号,在这种情况下,您不需要使用正则表达式,只需在最后一个左括号之后剪切字符串即可。

$title = "Warm Bodies (2013)";
$newTitle = substr($title, 0, strrpos($title, "(") - 1);
于 2013-02-15T13:11:07.223 回答