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

时间:2018-03-13 10:36:58

标签: php

我的字符串中有更多的+符号,我想删除最后一个和后面的任何字符 前 Giza + badrashen + test

4 个答案:

答案 0 :(得分:2)

您可以explode '+'上的join字符串然后array_slice忽略分割的最后一个元素(带有负数的$str),就像这样(假设{ {1}}是你的字符串)

$result = join('', array_slice(explode('+', $str), -1));

如果您怀疑自己的字符串可能不包含'+',则可以先使用strpos

检查其字符是否存在
if(strpos($str, '+') !== false) {
    $result = join('', array_slice(explode('+', $str), -1));
}

答案 1 :(得分:0)

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

> abc1234+12+3455

编辑,如果没有+但是没有崩溃/失败,则会给出一个空字符串

EDIT2:我第一次略微误读了这个问题,我的编辑答案更简单

答案 2 :(得分:0)

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

假设您有Giza+badrashen+test并希望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"

答案 3 :(得分:0)

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

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

//result:  foo-bar+foo

无需额外检查,因为如果找不到+,它只会返回原始字符串。

值得指出的是+必须逃脱在正则表达式的所有花朵中具有特殊意义......