4

私のウェブサイトでは、ユーザーに次のようなタグを送信させます。

tag tagtwo anothertag

シングルスペースと文字のみを使用できるようにしたいので、数字、ダッシュ、ダブルスペースなどを削除します。したがって、無効な文字列は次のようになります。

tag       tag2 another-tag

これを行うための次のコードがありますが、使用する正しい正規表現がわかりません。

$tags = strtolower($_POST['imgTags']);
$tags = preg_replace("/regex/", "", $tags);
$tagArray = explode(" ", $tags);

これを行うための正しい正規表現は何ですか?また、éとöをeとoに置き換えたいと思うかもしれません。

4

6 に答える 6

3

これにより、文字とスペース以外のものが削除されます。

$tags = preg_replace("/[^a-z ]/i", "", $tags);

次に、これは連続するスペースを折りたたむでしょう:

$tags = preg_replace("/ {2,}/", " ", $tags);

他の種類の空白文字を許可するだけでなく、それらを単一のスペースに置き換える場合は、代わりにこれを試してください。

$tags = preg_replace("/[^a-z\s]/i", "", $tags);
$tags = preg_replace("/\s+/", " ", $tags);

あなたの最後の文に関して:これへの一般的な方法はありません。特定のルールを追加する必要があります。ただし、preg_replace_callback変更されていない文字を判別するのに役立つ場合があります。

于 2012-10-17T10:16:18.063 に答える
1

それは単純です:

数値とダッシュを削除するには:

$tags = preg_replace("/[0-9\-]/", "", $tags);

次に、複数のスペースを削除するには:

$tags = preg_replace("/[\s]{2,}/", " ", $tags);

正規表現デモ

于 2012-10-17T10:17:08.840 に答える
1

文字と空白だけを保持するには、次を使用します。

$tags = preg_replace("/[^a-zA-Z\s]/", "", $tags);

スペースを正規化するには、次を追加します。

$tags = preg_replace("/\s+/", " ", $tags);
于 2012-10-17T10:13:09.163 に答える
1

数字、ダッシュ、ダブルスペースを削除したい

/([0-9\-]|[\s]{2,})/正規表現として機能する必要があります

于 2012-10-17T10:14:04.663 に答える
1

まず、複数のスペースとタブを1つに置き換えます。

/([ \t])[ \t]*/$1/

次に、文字とスペース以外のすべてをnullに置き換えます。

/[^A-Za-z ]+//

PHPコード

$tags = preg_replace('/([ \t])[ \t]*/', '$1', $tags);
$tags = preg_replace('/[^A-Za-z ]+/', '', $tags);

入力

tag       tag2 another-tag

出力

tag tag anothertag
于 2012-10-17T10:15:31.683 に答える
0

正規表現は

[a-zA-Z ]+

これにより、大文字または小文字と単一のスペース文字の組み合わせが可能になります。

于 2012-10-17T10:12:33.483 に答える