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
不需要额外的检查,因为如果没有找到+,它只会返回原始字符串
值得指出的是,+必须被转义,因为它在所有的正则表达式中都有特殊的意义…如果它没有+