入力文字列があります。形式は次のとおりです。
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, ';'));
$str = rtrim($str, ';string');
<?php
$string='This;is;my;long;string';
str_replace(';string','',$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);