PHP查找并替换字符串的一部分

时间:2012-09-05 13:12:55

标签: php string replace

我有一个输入字符串。格式如下:

This;is;my;long;string

使用PHP获取此输出字符串的任何快速解决方案(很多字符串):

This;is;my;long

我需要删除此附录:;string

  • 我不知道附录的长度:;这里有任何字母。

谢谢!

7 个答案:

答案 0 :(得分:5)

如果您一直使用;作为分隔符,则可以explode()字符串,删除最后一个索引,然后使用implode()重新加入字符串:

$str    = "This;is;my;long;string";
$strArr = explode(";", $str);

unset($strArr[count($strArr) - 1]);
$newStr = implode(";", $strArr);

<强>更新

为了使任何可搜索字符串能够正常工作,您可以使用array_keys()

$str             = "This;is;my;long;string";
$strArr          = explode(";", $str);
$searchStr       = "string";
$caseSensitive   = false;
$stringLocations = array_keys($strArr, $searchStr, $caseSensitive);

foreach ($stringLocations as $key) {
    unset($strArr[$key]);
}
$newStr = implode(";", $strArr);

或者,甚至更快,您可以使用array_diff()

$str       = "This;is;my;long;string";
$strArr    = explode(";", $str);
$searchStr = array("string");
$newArray  = array_diff($searchStr, $strArr);
$newStr    = implode(";", $newArray);

答案 1 :(得分:4)

$str = substr($string, 0, strrpos($string, ';'));

答案 2 :(得分:2)

str_replace

<?php 
$string='This;is;my;long;string';
str_replace(';string','',$string); ?>

答案 3 :(得分:2)

$str = rtrim($str, ';string');

答案 4 :(得分:1)

如果您知道;string将永远存在(大部分时间无论如何),您可以使用rtrim:

$trimmed = rtrim($text, ";string");

这将仅删除字符串中的尾随;string。除非它存在于字符串的末尾,否则不会被删除。

答案 5 :(得分:1)

不确定您要移除的部分是否始终位于开头。

$array = explode(";" , $string);
foreach ( $array as $key => $arr ) {
    if ( $arr == "string" ) {
        unset($array[$key]);
        break;
    }
    echo implode(";" , $array);
}

答案 6 :(得分:0)

如果字符串始终以这种方式格式化,那么substr就不会出错 - 可能是最快的方式

$str = 'This;is;my;long;string';
$str = substr( $str, 0, -7);
相关问题