0

それで、私は小さなプログラムで忙しく、いくつかのデータを置き換えたいと思います。しかし、データは動的です。

文字列があり、削除したいWarm Bodies (2013)(2013)Warm Bodiesすべてに(2013)することができます。たとえば Warm Bodies (1999)、すべてにすることができますa random string (2011)。したがって、削除するデータは常に()の間にあります。

私はこれを行うことができると思いましstr_replace("(%?%), "", "Warm Bodies (2013)");たが、良い解決策を見つけることができません。

4

4 に答える 4

3

参照を使用します:http preg_replace//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 に答える