Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1552 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Fonction supp petit mot et supp caractères spéciaux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Fonction supp petit mot et supp caractères spéciaux

n°2015486
Profil sup​primé
Posté le 09-08-2010 à 16:40:48  answer
 

Bonjour,
voila j'essaie de faire un script qui utiliserait le titre d'un article pour en générer une url.
Pour cela il me faut supprimer les mots inférieur a 4 lettres et remplacer les caractères spéciaux et lettres accentués.
j'ai donc fait deux fonctions une pour les caractères spéciaux et lettres accentués et une autre fonction pour les petit mots.
 

Citation :

function generation_url($chaine)  
{
$char = htmlentities(stripslashes(strtolower($chaine)),ENT_QUOTES) ;
 
 $cherche = array(""", "&", "€", "<", ">", "œ", "Ÿ", " ", "¡", "¢", "£", "¤",  
 "&yen", "¦", "§", "¨", "©", "ª", "«", "¬", "­", "®", "&masr;", "°", "±", "²",  
 "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾",  
 "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "&Aelig", "Ç", "È", "É", "Ê",  
 "Ë", "Ì", "Í", "Î", "Ï", "ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö",  
 "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "þ", "ß", "à", "á", "â",
 "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î",
 "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú",  
 "û", "ü", "ý", "ÿ", "þ", " ", ",", ";", ".", ":", "!", "?", "/", "(", " )", "{", "}", "[", "]", "+", "=", "*",  
 "~", "&#039", "'" );
 
$remplace = array("", "", "", "", "", "oe", "y", "-", "i", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "a", "a", "a", "a", "a", "a", "a", "c", "e", "e", "e", "e", "i", "i", "i", "i", "d", "n", "o", "o", "o",  
 "o", "o", "", "", "u", "u", "u", "u", "y", "", "", "a", "a", "a", "a", "a", "a", "", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "n",  
 "o", "o", "o", "o", "o", "", "", "u", "u", "u", "u", "y", "y", "", "-", "", "-", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",  
 "", "-", "-" );
 
return str_replace($cherche, $remplace, $char);
}


et

Citation :


function SupPetitMot($chaine)
 {
  return preg_replace('#(?<=\-)\w{1,3}(?=\-)#i', '', $chaine);
 }


 
le pb et que lorsque j'utilise ces fonctions sur la chaine je n'ai pas le résultat souhaité:
 

Citation :


echo SupPetitMot(generation_url('l\'été sera chaud et les filles seront belles.')) . '<br />' ;
echo generation_url(SupPetitMot('l\'été sera chaud et les filles seront belles.')) . '<br />' ;


me retourne :
l--sera-chaud---filles-seront-belles
l-ete-sera-chaud-et-les-filles-seront-belles
 
dans le 1er cas j'ai un l qui traine et plusieurs tirets "-" entre les mots
dans le 2eme cas j'ai des mots de 3 lettres ou moins alors qu'il aurait du être supprimé.
 
pour le coups je sèche.
 
merci de votre aide.


Message édité par Profil supprimé le 09-08-2010 à 22:50:47
mood
Publicité
Posté le 09-08-2010 à 16:40:48  profilanswer
 

n°2015557
stealth35
Posté le 09-08-2010 à 21:12:02  profilanswer
 

je dirais ca

Code :
  1. $str = 'l\'été sera chaud et les filles seront belles.';
  2. $str = htmlentities($str, ENT_NOQUOTES, 'UTF-8');    
  3. $str = preg_replace('/\&amp;([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;/', '$1', $str);
  4. $str = preg_replace('/\&amp;([A-za-z]{2})(?:lig)\;/', '$1', $str);
  5. $str = preg_replace('/\&amp;[^;]+\;/', '', $str);    
  6. $str = preg_replace('/\b\w{1,3}\b/', '', $str);
  7. $str = preg_replace('/\W+/', '-', $str);
  8. $str = trim($str, '-');
  9. echo $str;
  10. //sera-chaud-filles-seront-belles
 

tu peux aussi avec iconv pour les accents par contre ca depend avec quel lib est compiler (si c'est glibc c'est mort)

 
Code :
  1. $str = 'l\'été sera chaud et les filles seront belles.';
  2. $str = iconv('UTF-8', 'US-ASCII//IGNORE//TRANSLIT', $str);
  3. $str = preg_replace('/\b\w{1,3}\b/', '', $str);
  4. $str = preg_replace('/\W+/', '-', $str);
  5. $str = trim($str, '-');
  6. echo $str;


Message édité par stealth35 le 09-08-2010 à 21:18:13
n°2015589
Profil sup​primé
Posté le 09-08-2010 à 22:51:24  answer
 

merci stealth35,
la 2éme proposition marche nickel.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Fonction supp petit mot et supp caractères spéciaux

 

Sujets relatifs
Petit problème de bat [Résolu][Résolu] Nom d'une variable dépend d'une autre
php 5.3.2 et fonction include()[VBA/Excel] - Envoyer une selection variable dans une sous fonction ?
Petit souci : Switch javascript -> "default" ne fonctionne pas....Batch tcp/ip [RESOLU]
[Résolu] Problème concaténation et chemin vers autre classeur[résolu] AES_ENCRYPT / DECRYPT
Plus de sujets relatifs à : [Résolu] Fonction supp petit mot et supp caractères spéciaux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR