9
votes

Comment supprimer plusieurs barres obliques dans URI avec 'PregG' ou 'HTACCESS'

Comment supprimer plusieurs barres obliques dans URI avec 'PREG' ou "HTACCESS"

Site.com/edition/new /// -> Site.com/edition/new /


Site.com/edition /// nouvelle / -> Site.com/edition/new /

merci


0 commentaires

5 Réponses :


0
votes

EDIT: HA J'ai lu cette question comme "sans preg" oh bien: 3 xxx


0 commentaires

16
votes

Utilisation du symbole plus + dans regex signifie la survenue d'un ou plusieurs du caractère précédent. Donc, nous pouvons l'ajouter dans un Preg_replace de remplacer la survenue d'un ou plusieurs / par l'un d'entre eux xxx


1 commentaires

Bonne idée, mais comment puis-je faire la vérification après "édition" comme cet exemple $ URL = "Site.com/edition//new///"; $ newurl = preg_replace ('/ édition (\ / +) /', '/', $ url); Je ne sais pas appliquer



0
votes

http://domain.com/test/test/ > http:/domain.com/test/test xxx

http:/domain.com//test//test// > http://domain.com/test/test/ xxx

change r vers r = 301 Si tout fonctionne bien après avoir testé ...

Est-ce que quelqu'un sait-on préserver les doubles barres à barres dans la requête en utilisant la méthode ci-dessus?

(Par exemple: / Test // Test //? test = test // test> / test / test /? test = test // test)


0 commentaires

27
votes
$url = 'http://www.abc.com/def/git//ss';
$url = preg_replace('/([^:])(\/{2,})/', '$1/', $url);
// output http://www.abc.com/def/git/ss

$url = 'https://www.abc.com/def/git//ss';
$url = preg_replace('/([^:])(\/{2,})/', '$1/', $url);
// output https://www.abc.com/def/git/ss

4 commentaires

Belle réponse, pourriez-vous s'il vous plaît expliquer comment cette regex fonctionne?


Sur l'outil lié par @ ツ Liverbool Coller ([^:]) (\ / {2,}) comme regex, puis coller $ URL en tant que chaîne de test ou toute autre URL que vous souhaitez tester


@Gilhan la séquence [...] signifie correspondre à l'un de ces caractères. Dans ce cas, [^:] signifie faire correspondre n'importe quel caractère sauf un côlon. Le meneur ^ nie la séquence. Cette séquence est entourée de parenthèses qui en fait un «groupe de capture» et la valeur capturée peut être utilisée dans la substitution que la séquence [\ /] {2,} signifie que deux ou plusieurs barres obliques. Étant donné que l'expression entière est délimitée par des barres obliques, la barre oblique correspondante doit être évanouie, ce qui est ce que fait la barre oblique inverse. Cette séquence est entourée de parenthèses afin qu'elle soit également capturée mais ce n'est pas nécessaire.


@Gilhan Notez que l'exemple fourni dans la réponse ne fonctionne pas s'il y a plus d'une séquence d'esclaves à terme tels que: exemple.com/def//git//ss Comme l'expression correspondre à la première instance. Pour résoudre ce problème, il devrait utiliser la directive "gourmande": Preg_replace ('/ ([^:]) \ / {2,} / g', '/')



1
votes

simple, cochez cet exemple: xxx

sortie: xxx


0 commentaires