[RESOLU] Slug url, enlever tirret à la fin

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Slug url, enlever tirret à la fin

Re: Slug url, enlever tirret à la fin

par stephweb » 22 mars 2015, 11:24

C'est bon en fait, du coup j'y suis arrivé avec trim

Code : Tout sélectionner

$variable = trim($variable, " ?!.,");
Merci à tous

Re: Slug url, enlever tirret à la fin

par stephweb » 22 mars 2015, 11:15

Bonjour,
ok merci pour vos réponse, mais ça ne fonctionne pas vraiment.

_Dans ma fonction, j'ai essayé d'ajouté ceci:

Code : Tout sélectionner

function CreateURL($variable) { // si url laissé vide $variable = trim($variable); }
Si je laisse un espace en fin, il n'y a effectivement plu de tiret ok. Par contre si en fin je laisse un point, ou un point d'exlamation, il y a un tiret qui se met dans mes url.

_J'ai aussi essayé d'ajouter ceci dans ma fonction

Code : Tout sélectionner

function CreateURL($variable) { // si url laissé vide $variable = preg_replace('/-*^/', '', $variable); }
ça ne change rien du tout.

Est ce que j'ai pas fait les choses comme il le faut? ou y'a t-il d'autres solutions ?

Merci beaucoup.

Re: Slug url, enlever tirret à la fin

par tof73 » 20 mars 2015, 23:50

ou utiliser la fonction trim() de php

Re: Slug url, enlever tirret à la fin

par Ryle » 20 mars 2015, 23:11

Hello !

Tu peux utiliser des fonctions telles que substring() pour tronquer la chaine, mais le plus simple est d'utiliser une expression régulière et un preg_replace() :
$taVariable = preg_replace('/-*^/', '', $taVariable);
Tu supprimes ainsi tous les " - " qu'il y en ait un ou plus ( * ), qui se trouvent à la fin de ta chaîne ( ^ ) :)

Tu peux aussi utiliser les expressions régulière pour remplacer facilement tous les caractères spéciaux pour simplifier ta série de tests. Un truc du genre :
$taVariable = preg_replace_all('/[^a-zA-Z0-9]*/', '-', $taVariable);

Slug url, enlever tirret à la fin

par stephweb » 20 mars 2015, 21:50

Bonjour,
pour apprendre le php, je suis en train de créer un petit CMS.
Je bloc sur un petit truc, donc je fait appelle à votre aide svp.

Pour l'ajout d'article, je souhaite que lorsque le champ url est laissé vide, que le Titre soit aussi dans l'url.
J'ai donc fait ceci pour enlever les caractères spéciaux dans l'url

Code : Tout sélectionner

function CreateURL($variable) { // si url laissé vide, enlever caract. spécial au titre qui ira dans url... $variable = str_replace(' . '-', $variable); $variable = str_replace('\\', '-', $variable); $variable = str_replace('~', '-', $variable); $variable = str_replace('#', '-', $variable); $variable = str_replace('\'', '-', $variable); $variable = str_replace('!'', '-', $variable); ... return $variable; } if(empty($url)) { // si url laissé vide, titre va dans url $slug = CreateURL($titre); $url = $slug; }
Le problème, c'est que si à la fin du titre l'utilisateur met un point par exemple, il y aura un tiret en fin d'url.
Comment peut on faire pour que si un tiret se met en fin d'url qu'il soit automatiquement enlevé?

Merci beaucoup.