0

私のタイトルは、スペース、[ { } & () 大文字、および小文字のみに置き換えたい他のいくつかの不明な文字で構成されています。私はこれを使用していますが、ユーザーが何を入力するかを予測できないため、ある種の正規表現または preg の置換または preg の一致を検討しているため、アンダースコア (スペース) 付きの小文字のみが受け入れられるか、タイトルがアンダースコア付きのすべての小文字に変換されます。 .{[]}() などの他の文字は必要ありません。

私はこれを試しましたが、1行のpreg置換または正規表現を好みます

     $name = str_replace(' ', '_', $cityu);
     $name1 = str_replace('(', '_', $name);
     $name2 = str_replace(')', '_', $name1);
4

3 に答える 3

5

次のようなものを使用できると思います:

$string = preg_replace('/[^\w]/','_', $string);
$string = strtolower($string);
于 2013-03-11T17:24:20.387 に答える
0

preg_replace()角括弧で囲まれた文字クラスを使用したい場合、例えば[]:

$output = preg_replace('/[() ]/', '_', $input);

ただし、アルファベット以外の文字をすべて置き換えたい場合は、次を使用できます。

$output = preg_replace('/[^a-z0-9]/', '_', $input);

文字クラス^内の は「not」を意味するため、a から z または 0 から 9 以外の文字を置き換えます。

最後に、単に を使用して小文字に変換できるstrtolower()ため、コードは次のようになります。

$output = preg_replace('/[^a-z0-9]/', '_', strtolower($input));

____複数を 1 つに凝縮することも_できます。これは次の方法で実行できます。

$output = preg_replace('/_{2,}/', '_', $input);

where{2,}は、文字の 2 つ以上の出現に一致することを示します_

于 2013-03-11T17:28:03.263 に答える