Php 高级字符串替换为起始长度

Php 高级字符串替换为起始长度,php,Php,我想删除()中的所有内容,包括括号,是否可以使用str_替换?有时它可能是这样的(fff)。regex更难维护,所以我避免了这种情况。我认为stru replace在这里不可行,因为它搜索一个特定的字符串来替换,我们不能给它一个特定的字符串来替换,因为(一个方向)可以改变。(我假设它可以改变,因此不是一个可行的选择)。这里有两种选择 不使用正则表达式 我会在这个问题中使用preg\u replace: 编辑: 如果要更改()中的内容 对此,我仍然会使用正则表达式。或者拆分字符串、替换、重新连

我想删除
()
中的所有内容,包括括号,是否可以使用
str_替换
?有时它可能是这样的
(fff)
。regex更难维护,所以我避免了这种情况。

我认为
stru replace
在这里不可行,因为它搜索一个特定的字符串来替换,我们不能给它一个特定的字符串来替换,因为
(一个方向)
可以改变。(我假设它可以改变,因此不是一个可行的选择)。这里有两种选择

不使用正则表达式
我会在这个问题中使用
preg\u replace

编辑:


如果要更改()中的内容



对此,我仍然会使用正则表达式。或者拆分字符串、替换、重新连接字符串。可以使用组合的
strpos
来查找开头的
),然后再次使用
strpos
来查找结尾的
并将两个
substr
从0连接到
和从
到结尾。这将失败。如果括号为空(即:
()
),则不会删除括号。“包括括号”。
+
表示匹配前面的一个或多个标记。将其更改为
*
您是对的,如果()之间没有任何内容(如果我有
(一个)方向))
,它将只使用空字符串替换
(一个)
,留下
方向))
,这仍然不符合OPs要求。-不是吗?是的,但在这种情况下,这就是他的问题的答案,您可以再次使用str_replace删除字符串中仍然存在的所有()
$string = 'Justin Timberlake (One Direction)';
$string = str_replace('????', '',$string);
<?php

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

$string = "Justin Timberlake (One Direction)";
$string = preg_replace("/\(.*\)/", "", $string);
echo $string;
$string = "ABC (Test1)";
echo preg_replace("/\([^)]+\)/","",$string);
$string = "ABC (Test1)";
echo preg_replace("/\([^)]*\)/","",$string);
<?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);   
?>