2016-04-27 9 views
-1

文字列から末尾の特殊文字をすべて検出して削除する関数を作成しています。PHP rtrimすべての末尾の特殊文字

  • "ハロー世界"
  • "ハローワールド/"
  • "ハローworld--"
  • こんにちは世界:それはのような文字列を変換することができます/% - + ... "

を" hello-world "に変換します。

誰もが多くのコードを書くことなくこのトリックを知っていますか?ちょうど楽しみのため

+0

申し訳ありませんが、それは間違っていた、それが "こんにちは" です。 – lyhong

答えて

1

[^a-z\s]+ 

Regex demo

説明:
[^x]:1文字のx sample
\sではありません: "空白文字":スペース、タブ、改行、キャリッジ戻る、垂直タブsample
+:1つまたは複数のsample

はPHP:

$re = "/[^a-z\\s]+/i"; 
$str = "Hello world\nhello world/\nhello world--\nhellow world/%--+..."; 
$subst = ""; 

$result = preg_replace($re, $subst, $str); 
1

あなたはに応じて、このような正規表現を使用することができ、この

$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars. 

または文字列

preg_replace('/[^A-Za-z0-9\-\']/', '', $string); // escape apostraphe 
1

からapostrapheを脱出してみてくださいあなたの "特殊文字"の定義:

function clean_string($input) { 
    return preg_replace('/\W+$/', '', $input); 
} 

文字列$の末尾に単語文字(\W)以外の文字を何も置き換えません。 \W[^a-zA-Z0-9_]と一致するので、文字、数字、下線以外のものは置き換えられます。特殊文字である文字を指定するには、あなたが[]括弧内のすべてのあなたの特別な文字を入れて、このような正規表現、使用:

function clean_string($input) { 
    return preg_replace('/[\/%.+-]+$/', '', $input); 
} 
0

をこの1つはあなたが探しているものです。 :

([^\n\w\d \"]*)$

それはアルファベット、数字、スペースや改行からではないものを削除します。 はちょうどこのようにそれを呼び出す:

preg_replace('/([^\n\w\s]*)$/', '', $string);

+0

'\ w'には' \ d'は必要ありません。アンダースコアも許可します。 – chris85

+0

ああ、ありがとうございました。 – JanLeeYu