2011-09-13 10 views
-1

私は 'Delux Room_room'としています。私は結果として「Delux Room」を手に入れたい。私は次のコードを試しました。rtrimでphpのアンダースコアを

次のコードは、次のとおりです。

echo $row.'<br/>'; 
echo rtrim($row, 'room') .'<br/>'; 
echo rtrim($row, '_room') .'<br/>'; 

結果; -

Delux Room_room 
Delux Room_ 
Delux R 

しかし、私はデラックスルームをしたいです。私を助けてください。

言う

答えて

6
echo rtrim($row, '_room') .'<br/>'; 

「あなたは_romないものになるまで文字列の末尾から文字を削除します。」明らかにあなたが意味するものではありません。 the PHP manualから

$charlist charlistパラメータを使用して、削除する文字を指定することもできます。ストリップされるすべての文字をリストするだけです。あなたは文字の範囲を指定することができます。

削除する文字列ではなく、文字のリストを指定します。

あなたはおそらく代わりにsubstrを使用する必要があります。

echo substr($row, 0, -5); // remove the last 5 characers 

別の解決策は、不要な部分文字列を置き換えるためにstr_replaceを使用することです:

echo str_replace($row, '_room', ''); // replace "_room" with an empty string 

注これはsubstrアプローチよりも少ない正確​​であること。

0

rtrimの第2引数は、と設定されています。文字です。

$pos = strrpos($row, '_'); 
echo $substr($row, 0, $pos); 
0

:あなたは代わりに特定の文字列を削除するために、独自のメソッドを記述する必要がありますrtrimのように、

echo $row.'<br/>'; 
echo str_replace('room', '', $row) .'<br/>'; 
echo str_replace('_room', '', $row) .'<br/>'; 
0

あなたが代わりにstr_replaceを使用する必要があります:あなたの最後の過去は可変長である場合、@ lonesomedayのソリューションに代わり

function rtrim_str($str, $trim) { 
    if (substr($str, -strlen($trim)) == $trim) { 
    return substr($str, 0, -strlen($trim)); 
    } 
    return $str; // String not present at end 
} 

echo rtrim_str($row, '_room'); 
関連する問題