Je veux convertir n'importe quel titre par exemple. d'une entrée de blog à une URL conviviale. J'ai utilisé RawurlenCode () pour le faire, mais cela me donne beaucoup de strings étranges comme L'algorithme devrait considérer les caractères allemands comme Ö, Ä, etc. Je souhaite faire une URL du titre et pouvoir obtenir le titre en décodant l'URL. P>
J'ai essayé une partie de ce code: http://pastebin.com/l1swesbn qui est fourni dans d'autres questions, mais il semble que cela semble être aller simple. p>
E.g. Des idées? P> % s code>. p>
Hörzu.de -> Hoerzu-de -> Hörzu.de Code> P>
4 Réponses :
Vous voulez créer des limaces, mais de l'expérience, je peux vous dire que les possibilités de décodage sont limitées. Par exemple, "FOO-BAR" deviendra "FOO-BAR" alors comment pouvez-vous alors savoir que ce n'était pas "FOO BAR" ou "FOO-BAR"?
ou que des caractères que vous ne voulez pas dans votre limace et que vous n'avez pas non plus de représentation pour comme ""? "?
De sorte que vous pouvez éther utiliser une convertission de 1 à 1 comme rawurlencode () code> ou vous pouvez créer une limace, voici un exemple pour une fonction - mais comme je l'ai dit, aucun décodage fiable n'est possible - c'est juste dans sa Nature Depuis que vous devez jeter des informations. P>
function sanitizeStringForUrl($string){
$string = strtolower($string);
$string = html_entity_decode($string);
$string = str_replace(array('ä','ü','ö','Ã'),array('ae','ue','oe','ss'),$string);
$string = preg_replace('#[^\w\säüöÃ]#',null,$string);
$string = preg_replace('#[\s]{2,}#',' ',$string);
$string = str_replace(array(' '),array('-'),$string);
return $string;
}
function url_title($str, $separator = 'dash', $lowercase = FALSE) { if ($separator == 'dash') { $search = '_'; $replace = '-'; } else { $search = '-'; $replace = '_'; } $trans = array( '&\#\d+?;' => '', '&\S+?;' => '', '\s+' => $replace, '[^a-z0-9\-\._]' => '', $replace.'+' => $replace, $replace.'$' => $replace, '^'.$replace => $replace, '\.+$' => '' ); $str = strip_tags($str); foreach ($trans as $key => $val) { $str = preg_replace("#".$key."#i", $val, $str); } if ($lowercase === TRUE) { $str = strtolower($str); } return trim(stripslashes($str)); }
La manière la plus élégante que je pense utilisera un TRUCTITRATEUR BEHAT \ TRUCLITATRATORATRATOR.
Je dois étendre cette classe par votre classe car c'est un résumé, certains comme ceci: p>
composer require behat/transliterator
Cela ne répond pas à la question de l'OP: Comment pouvez-vous décoder une limace à la forme originale?
Il n'y a pas de moyen fiable de "décoder" la limace à sa forme d'origine. La meilleure solution ici serait de la base de données de la limace et de son original. P>
Vous souhaitez créer des limaces, mais de l'expérience, je peux vous dire que les possibilités de décodage sont limitées.
Vous ne pouvez pas le décoder. C'est un moyen
Vous ne pouvez pas le décoder. Comment sauriez-vous si la bonne solution est Horzu.de, Hörzu.de, Hörzu.de, Hòrzu.de, Hörzü.de ou toute autre des millions de combinaisons différentes?