str_replac()动态数据

时间:2013-02-15 13:03:40

标签: php

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

我有字符串Warm Bodies (2013),我想摆脱(2013) 只有Warm Bodies可以是所有内容,(2013)可以是所有内容 Warm Bodies (1999)a random string (2011)因此,我要删除的数据始终位于()。

之间

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

4 个答案:

答案 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"
}