0

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

This;is;my;long;string

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

This;is;my;long

我需要删除这个附录:;string

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

谢谢!

4

7 回答 7

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);
于 2012-09-05T13:15:39.680 回答
4
$str = substr($string, 0, strrpos($string, ';'));
于 2012-09-05T13:17:35.210 回答
2

str_replace

<?php 
$string='This;is;my;long;string';
str_replace(';string','',$string); ?>
于 2012-09-05T13:14:26.583 回答
2
$str = rtrim($str, ';string');
于 2012-09-05T13:17:01.550 回答
1

如果您知道它;string会一直存在(无论如何大部分时间),您可以使用 rtrim:

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

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

于 2012-09-05T13:16:49.593 回答
1

不确定您要删除的部分是否始终在开头。

$array = explode(";" , $string);
foreach ( $array as $key => $arr ) {
    if ( $arr == "string" ) {
        unset($array[$key]);
        break;
    }
    echo implode(";" , $array);
}
于 2012-09-05T13:17:15.270 回答
0

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

$str = 'This;is;my;long;string';
$str = substr( $str, 0, -7);
于 2012-09-05T13:14:58.800 回答