PHP MB_EREG_REPLACE لا يتم استبداله أثناء عمل preg_replace كما هو مقصود

StackOverflow https://stackoverflow.com/questions/3594627

  •  02-10-2019
  •  | 
  •  

سؤال

أحاول استبدالها في سلسلة جميع أحرف غير الكلمات بسلسلة فارغة تتوقع للمساحات وتجميع جميع المساحات المتعددة كمساحة واحدة.

الكود التالي يفعل هذا.

$cleanedString = preg_replace('/[^\w]/', ' ', $name);  
$cleanedString = preg_replace('/\s+/', ' ', $cleanedString);

ولكن عندما أحاول استخدام mb_ereg_replace لا يحدث شيء.

$cleanedString = mb_ereg_replace('/[^\w]/', ' ', $name);  
$cleanedString = mb_ereg_replace('/\s+/', ' ', $cleanedString);

$ CleanedString هو نفسه إذا كان اسم $ في الحالة أعلاه. ما الخطأ الذي افعله؟

هل كانت مفيدة؟

المحلول

mb_ereg_replace لا تستخدم الفواصل. قد تضطر أو لا تضطر أيضًا إلى تحديد الترميز من قبل.

mb_regex_encoding("UTF-8");
//regex could also be \W
$cleanedString = mb_ereg_replace('[^\w]', ' ', $name);
$cleanedString = mb_ereg_replace('\s+', ' ', $cleanedString);

نصائح أخرى

function create_slug_html($string, $ext='.html'){     
   $replace = '-';         
   $string=strtolower($string);     
   $string=trim($string);

    mb_regex_encoding("UTF-8");
    //regex could also be \W
    $string= mb_ereg_replace('[^\w]', ' ', $string);
    $string= mb_ereg_replace('\s+', ' ', $string);

   //remove query string     
   if(preg_match("#^http(s)?://[a-z0-9-_.]+\.[a-z]{2,4}#i",$string)){         
         $parsed_url = parse_url($string);         
         $string = $parsed_url['host'].' '.$parsed_url['path'];         
         //if want to add scheme eg. http, https than uncomment next line         
         //$string = $parsed_url['scheme'].' '.$string;     
   }      
   //replace / and . with white space     
   $string = preg_replace("/[\/\.]/", " ", $string);   

   // $string = preg_replace("/[^a-z0-9_\s-]/", "", $string);  

   //remove multiple dashes or whitespaces     
   $string = preg_replace("/[\s-]+/", " ", $string);   

   //convert whitespaces and underscore to $replace     
   $string = preg_replace("/[\s_]/", $replace, $string);     
   //limit the slug size     
   $string = substr($string, 0, 200);     
   //slug is generated     
   return ($ext) ? $string.$ext : $string; 

}

يرجى التحقق من أنه على ما يرام ودعم اللغة الإنجليزية و Unicode

المدخلات ليست متعدد البايت ومن هنا mb تفشل الوظيفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top