2011-01-09 5 views
9

から部分をトリミングし、それがを存在する場合、各文字列の終わりからいくつかのエンディング「myEnding」をトリミングします。PHP:最良の方法は、文字列のセットを処理したい文字列

これを行う最も簡単な方法は何ですか? 私はregexpですべてが可能であることを知っていますが、単純な作業であるように思われます。このためのより簡単なツールが存在するかどうかは疑問です。 IMAはこの1つ上にpreg_replaceで行く

$s = "foobarmyEnding"; 
$toRemove = "myEnding"; 

$len = strlen($toRemove); 
if (strcmp(substr($s, -$len, $len), $toRemove) === 0) 
{ 
    $s = substr($s, 0, -$len); 
} 

ideone

+0

['s($ str) - > replaceSuffix( 'myEnd (https://github.com/delight-im/PHP-Str/blob/ea3e40132e9d4ce27da337dae6286f2478b15f56/src/Str.php#L442)[このスタンドアロンライブラリ](https:// github .com/delight-im/PHP-Str)。 – caw

答えて

8

Gidi

+0

貴重な答えのためのタンク、私は非正規表現の解決策を求めていましたが、 – shealtiel

+1

あなたはそれを行う最も簡単な方法を求めました。この場合、正規表現は最も簡単な方法でした。 – dqhendricks

+0

はい、あなたに投票しました – shealtiel

5

おかげでこれを試してみてください。

$output = preg_replace('/myEnding$/s', '', $input); 
-3

rtrimhttp://php.net/manual/en/function.rtrim.php

$str = "foobarmyEnding"; 
$str = rtrim($str, 'myEnding'); 
// str == "foobar" 

LTRIMは、あなたはまた、空の文字列にして検索用語を置き換えるためにstr_replaceを使用しますが、その遅くなる可能性があり、文字列http://php.net/manual/en/function.ltrim.php

の開始のために同じ契約です文字列の先頭または末尾を修正する必要がある場合はrtrim/ltrim

+2

本当にありません。 'rtrim'の2番目のパラメータは、削除する文字のリストです。それは文字列全体として扱われません。 – TaZ

+0

質問は "各文字列の最後から" myEnding "をトリムする" –

+7

"myEnding"の直前に文字列が含まれている場合、それらも取り除かれます。例を挙げてみましょう。「HelloMikeShermanmyEnding」を入力するとどうなりますか?あなたは出力が "HelloMikeSherman"であると思いますが、出力は "HelloMikeSherma"になります! "n"は 'rtrim'に与えられた文字リストの一部です。 – TaZ

関連する問題