PHP-如何删除字符串中的特定字符?

PHP-如何删除字符串中的特定字符?,php,Php,我的字符串中有更多的+符号,我想删除最后一个符号及其后面的任何字符 前任 吉萨+巴德拉申+测试 $string = "abc1234+12+3455+xzyabc"; $string = substr($string, 0, strrpos($string,"+")); echo $string; > abc1234+12+3455 编辑:如果没有+但没有崩溃/失败,则给出一个空字符串 EDIT2:我第一次有点看错了这个问题,我编辑过的答案更简单你可以在“+”上分解你的字符串,然

我的字符串中有更多的+符号,我想删除最后一个符号及其后面的任何字符 前任 吉萨+巴德拉申+测试

 $string = "abc1234+12+3455+xzyabc";
 $string = substr($string, 0, strrpos($string,"+"));
 echo $string;

> abc1234+12+3455
编辑:如果没有+但没有崩溃/失败,则给出一个空字符串

EDIT2:我第一次有点看错了这个问题,我编辑过的答案更简单

你可以在“+”上分解你的字符串,然后加入它,忽略拆分的最后一个元素,带有负索引的数组\u切片,就像这样假设$str是你的字符串

$result = join('', array_slice(explode('+', $str), -1));
如果您怀疑字符串可能不包含“+”,可以先使用strpos检查它是否存在


一个简单的正则表达式解决方案:

    $myString="foo-bar+foo+foobar";
    $result = preg_split("/\+(?!.*\+)/", $myString);
    echo $result[0];

//result:  foo-bar+foo
假设您有Giza+badrashen+测试,并希望Giza+badrashen作为结果

echo preg_replace("/\+[^\+]*$/", "", "Giza+badrashen+test");
测试:

var_dump(preg_replace("/\+[^\+]*$/", "", "Giza+badrashen+test"));
var_dump(preg_replace("/\+[^\+]*$/", "", "Giza+badrashen+test+"));
var_dump(preg_replace("/\+[^\+]*$/", "", "Giza"));
输出:

string(14) "Giza+badrashen"
string(19) "Giza+badrashen+test"
string(4) "Giza"

具有负前瞻性的正则表达式可能是最紧凑的解决方案:

    $myString="foo-bar+foo+foobar";
    $result = preg_split("/\+(?!.*\+)/", $myString);
    echo $result[0];

//result:  foo-bar+foo
不需要额外的检查,因为如果没有找到+,它只会返回原始字符串


值得指出的是,+必须被转义,因为它在所有的正则表达式中都有特殊的意义…

如果它没有+