私は文字列を持っています:
$string = "Hello World!";
URLフレンドリーなタグに変えたいので、それを行う関数を開発しました:
function stripJunk($string){
$string = str_replace(" ", "-", $string);
$string = preg_replace("/[^a-zA-Z]\s/", "", $string);
$string = strtolower($string);
return $string;
}
ただし、$string
上記を実行すると、次のようになります。
$string = "hello-world!";
私が理解していることからすると、そうであってはならないにもかかわらず、文字が私の preg_replace をすり抜けているようです。
次のように表示されます。
$string = "hello-world";
何が起きてる?(これは簡単なピージーレモンスクイージーでなければなりません!)
編集1:正規表現が初心者のものであることを知りませんでしたが、何でも。さらに、文字列の \s を削除しても、目的の結果が得られません。
望ましい結果は次のとおりです。
- すべてのスペースはダッシュに変換されます。
- A ~ Z または 0 ~ 9 以外の残りの文字はすべて削除されます。
- 次に、文字列が小文字に変換されます。
編集 2+ : コードを少しクリーンアップしました。