| |
|
| :: |
| Auteur |
Message |
nelumbo PR1


Inscrit le: 06 Mar 2007 Messages: 186
|
Posté le: Dim Juin 17, 2007 8:06 am Sujet du message: Enlever les accents, majuscules... |
|
|
Bonjour,
J'ai besoin d'un petit coup de main pour récupérer une réécriture d'url.
J'affiche quelques liens:
| Code: | <?php
// connection a la base
$bdd5 = mysql_connect("############);
// selection de la base
mysql_select_db("########", $bdd5);
// Mes 5 derniers liens
$sql4 = mysql_query("SELECT name, id FROM jardin_link ORDER BY id DESC", $bdd5);
//envoi de la requete
while($affichage = mysql_fetch_array($sql4, MYSQL_ASSOC)){
echo "<li><a href=\"",($affichage['name']).'-s-'.$affichage['id'].'.html',"\">",$affichage['name'], "</a></li>";
}
mysql_close($bdd5);
?> |
Ce qui donne un lien du type:
- ../Le%20purin%20d'orties%20aux%20orties-s-9.html
Alors qu'il me faudrait:
- ../purin-dorties-aux-orties-s-9.html
j'ai récupéré le code permettant de nettoyer tout ça, mais je ne sais pas l'assembler.
| Code: | function code_url($string)
{
$words = explode(' ',$string);
$min_length = 3;
$cleaned_words = array();
foreach($words as $word)
{
if(strlen($word) >= $min_length)
{
$word = strtolower($word);
$word = str_replace(',','', $word);
$word = str_replace('\'','', $word);
$word = str_replace(':','', $word);
$word = str_replace(';','', $word);
$word = str_replace("( |')", "-", $word);
$accent = array('â','à','é','è','ê','î','ô','û','ç',"'");
$sans_accent = array('a','a','e','e','e','i','o','u','c','');
$word = str_replace($accent, $sans_accent, $word);
$word = eregi_replace("[^a-z0-9]","-",$word);
$word = eregi_replace("(^(_)*|(_)*$)","",$word);
$word = eregi_replace("(-){2,3}","",$word);
$word = eregi_replace("([0-9])*","",$word);
$cleaned_words[] = $word;
}
}
$cleaned_string = implode('-',$cleaned_words);
return $cleaned_string;
} |
 |
_________________ Rencontre gratuit || Petite annonce gratuite |
|
| Revenir en haut de page |
|
 |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14279
|
Posté le: Dim Juin 17, 2007 10:01 am Sujet du message: Re: Enlever les accents, majuscules... |
|
|
Le mieux serait, je pense d'utiliser la classe phpbb_seo, la méthode format_url() fait déjà ça pour les url du forum, bien plus rapidement que le code que tu proposes.
Emplois :
| Code: | | $titre_url = $phpbb_seo->format_url($titre_brut, 'valeur_par_defaut'); |
valeur_par_defaut étant la valeur que prendrait une URL dont le résultat du formatage du titre serait vide, dans le cas d'un titre comme "Горбачёв" par exemple.
++ |
_________________ Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________
Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche |
|
| Revenir en haut de page |
|
 |
nelumbo PR1


Inscrit le: 06 Mar 2007 Messages: 186
|
Posté le: Dim Juin 17, 2007 10:13 am Sujet du message: Re: Enlever les accents, majuscules... |
|
|
Z'ai rien compris
Le hic, c'est qu'il me faut le meme formatage d'url pour éviter les doublons. |
_________________ Rencontre gratuit || Petite annonce gratuite |
|
| Revenir en haut de page |
|
 |
nelumbo PR1


Inscrit le: 06 Mar 2007 Messages: 186
|
Posté le: Dim Juin 17, 2007 2:57 pm Sujet du message: Re: Enlever les accents, majuscules... |
|
|
Bon, c'est un début:
J'arrive à faire ça :
-http://www.lanature.fr/visite-jardin/l'eau-si-precieuse---s-7.html
Il faudrait :
-http://www.lanature.fr/visite-jardin/leau-precieuse-s-7.html
| Code: | $url= $affichage['name'];
$url = strtr($url, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$url = strtr($url, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
$url = strtr($url, ',!?";:', ' ');
$url = strtr($url, ' ', '-'); |
Mais les - s'accumulent autant de fois qu'il y a de caractères à changer. Comment y remédier ? Comment supprimer l'apostrophe sans le remplacer ?
Comment indiquer une liste de mot à ne pas inclure dans l'url ? |
_________________ Rencontre gratuit || Petite annonce gratuite |
|
| Revenir en haut de page |
|
 |
nelumbo PR1


Inscrit le: 06 Mar 2007 Messages: 186
|
Posté le: Lun Juin 18, 2007 7:49 pm Sujet du message: Re: Enlever les accents, majuscules... |
|
|
Re, ça progresse. J'ai fait du large dans mon script. Je ne suis plus obligé de garder le meme format d'url.
Un dernier truc me titille, c'est pas bien grave mais... Lorsque mon url se termine par un "?" ou "!" il y a un espace entre qui est comblé par un "-".
Exemple:
Les plantes, antibiotiques naturels ?
donne :
les-plantes-antibiotiques-naturels--s-12.html
Le dernier tiret m'embête
J'ai rajouté ça, mais rien ne change. Une idée ?
| Code: | if ($titre_url[count($titre_url)-1] == '-')
{
$titre_url[count($titre_url)-1] = '';
} |
|
_________________ Rencontre gratuit || Petite annonce gratuite |
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14279
|
|
| Revenir en haut de page |
|
 |
nelumbo PR1


Inscrit le: 06 Mar 2007 Messages: 186
|
Posté le: Mar Juin 19, 2007 6:21 pm Sujet du message: Re: Enlever les accents, majuscules... |
|
|
T'as eu le dernier mot
Les plantes, antibiotiques naturels ?
=
les-plantes-antibiotiques-naturels-s-12.html
Thanks  |
_________________ Rencontre gratuit || Petite annonce gratuite |
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14279
|
|
| Revenir en haut de page |
|
 |
blaugrana
Inscrit le: 10 Juil 2006 Messages: 11
|
Posté le: Jeu Aoû 09, 2007 9:44 pm Sujet du message: Re: Enlever les accents, majuscules... |
|
|
Bonsoir tout le monde j'ai un problème similaire.
J'aimerais utiliser la function format_url pour un de mes sites web mais impossible de l'utiliser.
| Code: | // --> URL rewriting functions <--
/**
* Prepare Titles for URL injection
*/
function format_url( $url, $type = 'topic' ) {
$url = preg_replace("`\[.*\]`U","",$url);
$url = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$url);
$url = htmlentities($url, ENT_COMPAT, $this->encoding);
$url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );
$url = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $url);
$url = ( $url == "" ) ? $type : strtolower(trim($url, '-'));
return $url;
} |
Voici mon lien.
| Code: | | <a title="<?php echo stripslashes($donnees['titre']); ?>" href="news-<?php echo $donnees['id']; ?>-<?php echo format_url($donnees['titre']); ?>">Lire l'article complet...</a> |
Voici l'erreur que j'obtiens :
Fatal error: Using $this when not in object context in
Un grand merci d'avance  |
_________________
FC Barcelona - Fans |
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14279
|
|
| Revenir en haut de page |
|
 |
|
|
| Navigation |
Autres sujets de discussion |
|
|
|
|
|
|
|