英数字ではないもの、または _ を含むスペースをすべて削除しようとしています:
$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);
ここで何が間違っているのですか、うまくいかないようです。私はいくつかの正規表現の組み合わせを試しました...(そして、私は一般的にあまり頭が良くありません)。
英数字ではないもの、または _ を含むスペースをすべて削除しようとしています:
$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);
ここで何が間違っているのですか、うまくいかないようです。私はいくつかの正規表現の組み合わせを試しました...(そして、私は一般的にあまり頭が良くありません)。
これを試して:
$filename = preg_replace("/[^a-zA-Z0-9 ]/", "_", $filename);
$filename = preg_replace('~[\W\s]~', '_', $filename);
私があなたの質問を正しく理解している場合は、スペース (\s) または英数字以外 (\W) の文字を「_」に置き換えてください。これでうまくいくはずです。英数字に一致する小文字の \w とは対照的に、\W は大文字であることに注意してください。
私のために働く解決策は次のとおりです。
$filename = preg_replace('/\W+/', '_', $filename);
は、スペースと英数字以外のすべての文字を含む空白+
の 1 つ以上の出現のブロックに一致します\W
試す
$filename = preg_replace("/[a-zA-Z0-9]|\s/", "_", $filename);