高级字符串替换为start to length

时间:2014-09-16 16:20:39

标签: php

$string = 'Justin Timberlake (One Direction)';
$string = str_replace('????', '',$string);

我希望删除()中的所有内容,包含括号,是否可以使用str_replace?有时可能会像( fff)这样。正则表达式难以维护,所以我避免这样做。

3 个答案:

答案 0 :(得分:2)

我认为str_replace在这里是不可行的,因为它会搜索要替换的特定字符串,而我们无法为其提供特定要替换的字符串,因为(One Direction)可以更改。 (我假设它可以改变,因此不是一个可行的选择)。这是两个选择;

不使用正则表达式

<?php

$string = "Justin Timberlake (One Direction)";
echo substr($string, 0, strpos($string, "("));

https://eval.in/194261

使用正则表达式

<?php

$string = "Justin Timberlake (One Direction)";
$string = preg_replace("/\(.*\)/", "", $string);
echo $string;

https://eval.in/194255

答案 1 :(得分:0)

我会在这个问题中使用preg_replaceRemove Text Between Parentheses PHP

$string = "ABC (Test1)";
echo preg_replace("/\([^)]+\)/","",$string);

编辑:

$string = "ABC (Test1)";
echo preg_replace("/\([^)]*\)/","",$string);

答案 2 :(得分:0)

如果你想改变里面的内容()

https://eval.in/194270

<?php

$string = "Justin Timberlake (One Direction)";
$start = '(';
$end = ')';
if (strpos($string,$end) !== false) {
            $startpos = strpos($string, $start) + strlen($start);
            if (strpos($string, $start) !== false) 
            {
            $endpos = strpos($string, $end, $startpos);
                if (strpos($string, $end, $startpos) !== false)
                {
                  $data_replace= substr($string, $startpos, $endpos - $startpos);
                }               
            }
   }
$data_insert = "Sing Song";
echo $data_updated = str_replace($data_replace,$data_insert,$string);   
?>