我有一个输入字符串。格式如下:
This;is;my;long;string
使用 PHP 获取此输出字符串的任何快速解决方案(大量字符串):
This;is;my;long
我需要删除这个附录:;string
- 我不知道附录的长度: ; 这里的任何字母。
谢谢!
如果您一直使用;
作为分隔符,您可以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);
$str = substr($string, 0, strrpos($string, ';'));
<?php
$string='This;is;my;long;string';
str_replace(';string','',$string); ?>
$str = rtrim($str, ';string');
如果您知道它;string
会一直存在(无论如何大部分时间),您可以使用 rtrim:
$trimmed = rtrim($text, ";string");
这将仅从;string
字符串中删除尾随。除非它存在于字符串的末尾,否则它不会被删除。
不确定您要删除的部分是否始终在开头。
$array = explode(";" , $string);
foreach ( $array as $key => $arr ) {
if ( $arr == "string" ) {
unset($array[$key]);
break;
}
echo implode(";" , $array);
}
如果字符串总是以这种方式格式化,那么substr就不会出错- 可能是最快的方式
$str = 'This;is;my;long;string';
$str = substr( $str, 0, -7);