2016-07-26 8 views
1

Diese Funktion zum Erstellen von URL-Schnecken:PHP-Code, um Sonderzeichen in String zu ersetzen entfernt die Zeichen

function slugify($text) 
{ 
    // replace non letter or digits by - 
    $text = preg_replace('~[^\pL\d]+~u', '-', $text); 

    // transliterate 
    $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); 

    // remove unwanted characters 
    $text = preg_replace('~[^-\w]+~', '', $text); 

    // trim 
    $text = trim($text, '-'); 

    // remove duplicate - 
    $text = preg_replace('~-+~', '-', $text); 

    // lowercase 
    $text = strtolower($text); 

    if (empty($text)) { 
    return 'n-a'; 
    } 

    return $text; 
} 

ersetzt keine Zeichen wie:

ľščťýžťžýéíáý

zu so etwas wie:

lsctyztzyeiay

, sondern es entfernt sie vollständig

so diese Zeichenfolge:

asdf 1234 3 ľščťlkiop

wird

asdf-1234-3-lkiop

statt:

asdf-1234-3-lsctlkiop

Irgendeine Idee, was das Verschwinden von nicht-englischen Zeichen verursacht und wie man sie in die englische Variante umwandeln lässt?

+0

Dies könnte Ihnen helfen http://StackOverflow.com/A/2729224/4949388, sonst könnten Sie versuchen, http://StackOverflow.com/A/10064701/4949388 –

Antwort

1

Ich habe Ihre Funktion getestet und es scheint ordnungsgemäß zu funktionieren.
You can check here die Ausgabe mit Ihren Daten.

+0

funktioniert nicht. wenn ich var_dump ich dies immer: 'ÄÅ¡Å ¥ ľšÄÅ ¥ ľšÄÅ ¥ ľšÄÅ ¥' Jede Idee, warum? –

+0

Sie müssen die Codierung der Webseite auf UTF-8 einstellen, um spezielle Nicht-ASCII-Zeichen richtig anzuzeigen. Fügen Sie '' in den '' Block Ihrer Webseite hinzu. – Jocelyn

+0

Sie haben Recht, es funktioniert in der Ansicht, aber beim Speichern in der db ist es durcheinander. Ich werde einige Dinge oder etwas überprüfen, bevor Sie in die Datenbank speichern. Vielen Dank. –