إزالة المساحات وأي شيء ليس أبجديًا رقميًا
-
25-09-2019 - |
سؤال
أحاول إزالة كل ما ليس أبجديًا رقميًا ، أو مساحة تحتوي على _:
$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);
ماذا أفعل خطأ هنا ، لا يبدو أنه يعمل. لقد جربت العديد من مجموعات Regex ... (وأنا عمومًا لست مشرقًا جدًا).
المحلول
جرب هذا:
$filename = preg_replace("/[^a-zA-Z0-9 ]/", "_", $filename);
نصائح أخرى
$filename = preg_replace('~[\W\s]~', '_', $filename);
إذا فهمت سؤالك بشكل صحيح ، فأنت تريد استبدال أي مساحة ( s) أو حرف غير الألفاني ( w) مع "_". هذا يجب أن يكون على ما يرام. لاحظ أن w هي حقيبة كبيرة ، على عكس الأحرف الصغيرة w التي ستتطابق مع الأحرف الأبجدية.
الحل الذي يناسبني هو:
$filename = preg_replace('/\W+/', '_', $filename);
ال +
تطابق كتل من حدث واحد أو أكثر \W
مساحة بيضاء تشمل المساحات وجميع الشخصيات غير الرقمية الرقمية
محاولة
$filename = preg_replace("/[a-zA-Z0-9]|\s/", "_", $filename);
لا تنتمي إلى StackOverflow