2010-11-22 7 views
5

私はSEOフレンドリーなURLのような文字列を生成したいと思います。空白を複数空白で区切り、空白をハイフン(-)に置き換えてstrtolowerに置き換え、特殊文字を使用しないでください。そのために1つ以上の連続するスペースを1文字で置き換えるにはどうすればよいですか?

私は現在、このようなコードだ:

$string = htmlspecialchars("This Is The String"); 
$string = strtolower(str_replace(htmlspecialchars((' ', '-', $string))); 

上記のコードは、複数のハイフンを生成します。私はその複数のスペースを排除し、それを1つのスペースに置き換えたい。要するに、私は文字列のようなSEOフレンドリーなURLを達成しようとしています。どうすればいいのですか?あなたはダッシュと空白文字の任意のシーケンスを置き換えるためにpreg_replaceを使用することができます

+0

関連:http://stackoverflow.com/questions/741553/how-can-i-convert-two-or-more-dashes-to-singles-and-remove-all-dashes-at-the-begi 、http://stackoverflow.com/questions/4051889/regular-expression-any-text-to-url-friendly-one、et al。 – Gumbo

答えて

18

...

$string = preg_replace('/\s+/', '-', $string); 
  • 外側のスラッシュは、パターンの区切り文字です - 彼らはちょうどマークのパターンが始まり、
  • をどこで終了
  • \ sはいずれかに一致しますwhitespace character
  • +は、前の要素をmatch 1 or more timesにします。デフォルトでは、これは「greedy」なので、できるだけ多くの連続したマッチを食べるでしょう。
  • 何をしたいの詳細
+0

応答のためにありがとう、関数の最初のパラメーターは実際に何を説明することができれば感謝します。 –

+1

Paul、ありがとう。私は正規表現についてもっと勉強しなければなりません。 –

+0

偉大な答えポール。 2つ以上のスペースにどのようにマッチしますか? –

0
echo preg_replace('~(\s+)~', '-', $yourString); 
0

ためPCRE syntax上のマニュアルページを参照してください文字列を "slugify" です。 "php slugify"または "php slug"でSOまたはGoogleを検索してみてください。

+0

彼はstackoverflowで答えを求めています。 Googleは答えではありません。 -1 – ALH

関連する問題