6

英数字ではないもの、または _ を含むスペースをすべて削除しようとしています:

$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);

ここで何が間違っているのですか、うまくいかないようです。私はいくつかの正規表現の組み合わせを試しました...(そして、私は一般的にあまり頭が良くありません)。

4

4 に答える 4

12

これを試して:

$filename = preg_replace("/[^a-zA-Z0-9 ]/", "_", $filename);
于 2010-11-17T23:55:32.347 に答える
7
$filename = preg_replace('~[\W\s]~', '_', $filename);

私があなたの質問を正しく理解している場合は、スペース (\s) または英数字以外 (\W) の文字を「_」に置き換えてください。これでうまくいくはずです。英数字に一致する小文字の \w とは対照的に、\W は大文字であることに注意してください。

于 2010-11-18T00:09:46.430 に答える
2

私のために働く解決策は次のとおりです。

$filename = preg_replace('/\W+/', '_', $filename);

は、スペースと英数字以外のすべての文字を含む空白+の 1 つ以上の出現のブロックに一致します\W

于 2013-10-14T14:52:09.333 に答える
0

試す

$filename = preg_replace("/[a-zA-Z0-9]|\s/", "_", $filename);
于 2010-11-18T00:07:03.357 に答える