În cazul în care se doreşte realizarea unor linkuri valide prin preluarea unor texte, dar şi în cazul în care se doreşte conversia pentru redenumirea unor fişiere (la upload), se poate folosi o funcţie simplă care, pe de o parte elimină diacriticile, iar pe de alta elimină spaţiul care, altfel ar fi înlocuit cu grupul de caractere %20.
Figura demonstrează diferenţa dintre şirul iniţial şi modul cum este transformat.
Varianta 1
Are o nuanţă exhaustivă privind eliminarea caracterelor neindicate pentru url-uri.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php function fc_creare_url ($camp_tinta = '') { $camp_tinta = preg_replace('/[^\\pL\d_]+/u', '-', $camp_tinta); $camp_tinta = trim($camp_tinta, "-"); $camp_tinta = iconv('utf-8', "us-ascii//TRANSLIT", $camp_tinta); $camp_tinta = strtolower($camp_tinta); $camp_tinta = preg_replace('/[^-a-z0-9_]+/', '', $camp_tinta); return $camp_tinta; } // Exemplu echo fc_creare_url('Test creare URL Ă ă Î î Ş ş;Ţ.ţ Â â'); ?> |
Rezultat: test-creare-url-a-a-i-i-s-s-t-t-a-a
Varianta 2
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php function fc_creare_url($camp_tinta) { $diacritice = array('Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E','Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U','Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c','è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o','ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'Ă'=>'A', 'ă'=>'a','Ş'=>'S','Ș'=>'S','ş'=>'s','ș'=>'s','Ţ'=>'t','Ț'=>'t','ţ'=>'t','ț'=>'t'); $camp_tinta=strtr($camp_tinta, $diacritice ); $camp_tinta=preg_replace('/[^A-Za-z0-9-]+/', '-', $camp_tinta); $camp_tinta=strtolower($camp_tinta); return $camp_tinta; } // Exemplu echo fc_creare_url('Test creare URL Ă ă Î î Ş ş Ţ ţ Â â'); ?> |
Rezultat: test-creare-url-a-a-i-i-s-s-t-t-a-a
Exemplul 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php function fc_creare_url($camp_tinta) { $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','-'); $camp_tinta = str_replace($a, $b, $camp_tinta); $c=array('.', ';'); $d=array('-', '-'); $camp_tinta = str_replace($c, $d, $camp_tinta); return strtolower(preg_replace(array('/[^a-zA-Z0-9 -]/', '/[ -]+/', '/^-|-$/'), array('', '-', ''), $camp_tinta)); } // Exemplu: ECHO fc_creare_url('Test creare URL Ă ă: Î ,î Ş ş;Ţ.ţ  â'); ?> |
Rezultat: test-creare-url-a-a-i-i-s-s-t-t-a-a
Varianta 4
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php function fc_creare_url($camp_tinta) { $a = array('Ș', 'Ț', 'ş', 'ţ', 'Ş', 'Ţ', 'Â', 'ș', 'ț', 'î', 'â', 'ă', 'Î', ' ', 'Ă', 'ë', 'Ë'); $b = array('s', 't', 's', 't', 's', 't', 'a', 's', 't', 'i', 'a', 'a', 'i', 'a', 'a', 'e', 'E'); $camp_tinta = str_ireplace($a, $b, strtolower(trim($camp_tinta))); $camp_tinta = preg_replace('/[^\w\d\-\ ]/', '-', $camp_tinta); $camp_tinta = str_replace(' ', '-', $camp_tinta); return preg_replace('/\-{2,}/', '-', $camp_tinta); } // Exemplu echo fc_creare_url('Test creare URL Ă ă Î î Ş ş;Ţ.ţ Â â'); ?> |
Rezultat: testacreareaurlaaaaaiaiasas-t-taaaa
Sursa: PHP.net/manual, W3docs.com