Reguläre Ausdrucksfunktion, die Leerzeichen zwischen Wörtern durch Bindestriche ersetzt.
<?php
function create_slug($string){
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
return $slug;
}
echo create_slug('does this thing work or not');
//returns 'does-this-thing-work-or-not'
?>
Vielleicht können Sie dort ein strtolower hinzufügen?
Super!
Hier ist ein Slug-Ersteller mit jQuery (Client-Seite).
$('#title').change(function() {$(this).val($.trim($(this).val()));
// Leere Leerzeichen trimmen
$(this).val($(this).val().replace(/\s+/g,' '));
// Mehrere Leerzeichen durch ein einziges ersetzen
$('#url').val($(this).val().toLowerCase());
$('#url').val($('#url').val().replace(/\W/g, ' '));
$('#url').val($.trim($('#url').val()));
$('#url').val($('#url').val().replace(/\s+/g, '-'));
});
Verwenden Sie keinen clientseitigen Slug-Ersteller, da er böswillig ausgenutzt werden kann. Wenn ein Angreifer aus beliebigen Gründen Sonderzeichen in einen Slug einfügen möchte, kann er das clientseitige Skript leicht umgehen und den bösartigen Slug an den Server senden. Wenn der Server keine zusätzliche Prüfung/Änderung des übermittelten Slugs durchführt (was, wenn er es täte, dann kein clientseitiger Slug-Ersteller notwendig wäre), dann kann der Angreifer den Server erfolgreich ausnutzen.
Stoppwörter sind immer eine schöne Ergänzung zu Slug-Erstellern,
function remove_accent($str){
$a = array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ÿ','Ā','ā','Ă','ă','Ą','ą','Ć','ć','Ĉ','ĉ','Ċ','ċ','Č','č','Ď','ď','Đ','đ','Ē','ē','Ĕ','ĕ','Ė','ė','Ę','ę','Ě','ě','Ĝ','ĝ','Ğ','ğ','Ġ','ġ','Ģ','ģ','Ĥ','ĥ','Ħ','ħ','Ĩ','ĩ','Ī','ī','Ĭ','ĭ','Į','į','İ','ı','IJ','ij','Ĵ','ĵ','Ķ','ķ','Ĺ','ĺ','Ļ','ļ','Ľ','ľ','Ŀ','ŀ','Ł','ł','Ń','ń','Ņ','ņ','Ň','ň','ʼn','Ō','ō','Ŏ','ŏ','Ő','ő','Œ','œ','Ŕ','ŕ','Ŗ','ŗ','Ř','ř','Ś','ś','Ŝ','ŝ','Ş','ş','Š','š','Ţ','ţ','Ť','ť','Ŧ','ŧ','Ũ','ũ','Ū','ū','Ŭ','ŭ','Ů','ů','Ű','ű','Ų','ų','Ŵ','ŵ','Ŷ','ŷ','Ÿ','Ź','ź','Ż','ż','Ž','ž','ſ','ƒ','Ơ','ơ','Ư','ư','Ǎ','ǎ','Ǐ','ǐ','Ǒ','ǒ','Ǔ','ǔ','Ǖ','ǖ','Ǘ','ǘ','Ǚ','ǚ','Ǜ','ǜ','Ǻ','ǻ','Ǽ','ǽ','Ǿ','ǿ');
$b = array('A','A','A','A','A','A','AE','C','E','E','E','E','I','I','I','I','D','N','O','O','O','O','O','O','U','U','U','U','Y','s','a','a','a','a','a','a','ae','c','e','e','e','e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y','A','a','A','a','A','a','C','c','C','c','C','c','C','c','D','d','D','d','E','e','E','e','E','e','E','e','E','e','G','g','G','g','G','g','G','g','H','h','H','h','I','i','I','i','I','i','I','i','I','i','IJ','ij','J','j','K','k','L','l','L','l','L','l','L','l','l','l','N','n','N','n','N','n','n','O','o','O','o','O','o','OE','oe','R','r','R','r','R','r','S','s','S','s','S','s','S','s','T','t','T','t','T','t','U','u','U','u','U','u','U','u','U','u','U','u','W','w','Y','y','Y','Z','z','Z','z','Z','z','s','f','O','o','U','u','A','a','I','i','O','o','U','u','U','u','U','u','U','u','U','u','A','a','AE','ae','O','o');
return str_replace($a, $b, $str);
}
function post_slug($str){
return strtolower(preg_replace(array('/[^a-zA-Z0-9 -]/', '/[ -]+/', '/^-|-$/'), array('', '-', ''), remove_accent($str)));
}
Sie müssten auch Satzzeichen entfernen
Der Originalcode macht das bereits. Das Caret ^ bedeutet in RegEx NICHT. Gemäß dem Beispiel erlaubt der Autor nur Buchstaben, Zahlen und Bindestriche ;)
Ausgezeichneter Beitrag! Sehr einfach und gut.
Danke, dass Sie es online gestellt haben.
@Weblap.ro Danke für dieses Skript zur Entfernung von Sonderzeichen. Das macht diese Seite sehr nützlich.
Sudeep
Infovinity
Eine weitere äquivalente Funktion, die bessere Ergebnisse liefert: http://code.seebz.net/p/to-permalink/
Wie erstelle ich einen Beitragsslung, wenn meine Sprache UTF-8 ist, wie z. B. "xin chào". Ich möchte nicht, dass es wie "xin cho" geändert wird, wenn ich Ihre Funktion verwende.
Meine Funktion wie Ihre
Helfen Sie mir, den Slug wie den String zu ändern: "xin chào."
Danke
Für die vietnamesische Sprache habe ich dieses Array verwendet
coole Tipps, aber ich kann doppelte Slugs einschränken
BUMP
Sie müssten sich mit einer Datenbank verbinden, um das zu tun.
Für den schnellen und nicht ganz perfekten Weg habe ich immer verwendet
$slug = preg_replace(“/\W+/”,”-“,$text);
Durch die Verwendung von \W+ kümmern Sie sich um alle nicht-lateinischen Zeichen.
Egal was ich für eine Website brauche, bei der ich Schwierigkeiten habe, ich google, was ich will, und Ihre Links enttäuschen nie. Danke Chris!
Zustimmen
Wie kann ich einen Button hinzufügen? Wenn ich also auf Auto-Generator für benutzerfreundliche URLs klicke?
Was ist mit der integrierten Funktion dafür? sanitize_title_with_dashes(); Ich benutze sie ständig.
sanitize_title_with_dashes() ist eine WordPress-Funktion :).
Mein Fehler! Ich dachte, Sie sprächen alle über WordPress :) Entschuldigung!
function getSlug($text) { $text = preg_replace('~[^\\pL\d]+~u', '-', $text); $text = trim($text, '-'); $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); $text = strtolower($text); $text = preg_replace('~[^-\w]+~', '', $text); if (empty($text)) { return 'n-a'; } return $text; }100% funktionsfähig
Mein Titel ist बोन कैंसर: जानें, क्यों नहीं नजरअंदाज करना चाहिए इन संकेतों को?
Ich möchte es in बोन-कैंसर-जानें-क्यों-नही.html ändern.
funktioniert nicht mit dem obigen Code, irgendein Vorschlag.
Danke.
danke Davinder Singh :-)
und das ganze für deutsche Umlaute erweitert, einfach genial
function getSlug($text)
{
$word = strtolower($text);
$word = str_replace(“ä”,”ae”,$word);
$word = str_replace(“ö”,”oe”,$word);
$word = str_replace(“ü”,”ue”,$word);
$word = str_replace(“ß”,”ss”,$word);
$word = str_replace(“&”,”und”,$word);
$text = preg_replace(‘~[^\pL\d]+~u’, ‘-‘, $word);
$text = trim($text, ‘-‘);
$text = iconv(‘utf-8’, ‘us-ascii//TRANSLIT’, $text);
$text = strtolower($text);
$text = preg_replace(‘~[^-\w]+~’, ”, $text);
if (empty($text))
{
return ‘n-a’;
}
return $text;
}
Danke, das ist wirklich lohnenswert und funktioniert für mich...:p
Ein weiterer Weg, dies einfach zu tun
Die Erstellung von Slugs auf diese Weise ist auf englische Alphabete beschränkt. Es ist besser, zuerst die Funktion explode zu verwenden und Leerzeichen als Trennzeichen zu verwenden, um sie in ein Array zu konvertieren, und sie dann mit einem optionalen Trennzeichen wieder zusammenzufügen.
}
Dieses schöne Skript wird alle Aspekte abdecken. Einschließlich der Entfernung von Sonderzeichen und der Behandlung verschiedener Sprachen
https://github.com/cocur/slugify
In WP verwende ich einen schönen Post Title Formatter für diesen Zweck.
Ich habe eine Bibliothek zur Generierung von Slugs erstellt: https://github.com/ausi/slug-generator
tolle Arbeit
Das wird effizienter sein.
function slugify(string) {
const a = ‘àáäâãåèéëêìíïîòóöôùúüûñçßÿœæŕśńṕẃǵǹḿǘẍźḧ·/_,:;’
const b = ‘aaaaaaeeeeiiiioooouuuuncsyoarsnpwgnmuxzh——‘
const p = new RegExp(a.split(”).join(‘|’), ‘g’)
Wenn Sie mit PHP - Codeigniter Framework arbeiten und URL-Slugs in Codeigniter generieren möchten, folgen Sie diesem Link
https://datainflow.com/generate-url-slug-codeigniter/