Frage

Ich versuche, in einem String alle nicht Wortzeichen mit leeren String zu ersetzen, für den Raum und die Put zusammen alle mehrere Räume als ein einziger Raum erwartet.

Code Nach tut dies.

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

Aber wenn ich versuche, passiert nichts mb_ereg_replace zu verwenden.

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

ist $ cleanedString gleiche wie der, dass, wenn $ name im obigen Fall. Was mache ich falsch?

War es hilfreich?

Lösung

mb_ereg_replace keine Separatoren verwenden. Sie können oder auch nicht vor der Codierung angeben müssen.

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

Andere Tipps

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; 

}

Bitte überprüfen ist es ok und Englisch und Unicode

Unterstützung

Der Eingang ist nicht Multi-Byte daher die mb Funktion fehlschlägt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top