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 = rtrim($str, ';string');
于 2012-09-05T13:17:01.550 に答える
2

str_replace

<?php 
$string='This;is;my;long;string';
str_replace(';string','',$string); ?>
于 2012-09-05T13:14:26.583 に答える
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 に答える