PHP - Suppression d'une barre oblique à partir de la fin d'une URL
Le code ci-dessous supprime les "www.", etc. depuis le début de sites web qui sont inscrites dans une base de données. Il fonctionne très bien.
Est-il une manière que je pourrais utiliser un code similaire pour supprimer une barre oblique à partir de la queue d'un site web qui est entré dans la même base de données?
Merci d'avance,
Jean
$remove_array = array('http://www.', 'http://', 'https://', 'https://www.', 'www.');
$site = str_replace($remove_array, "", $_POST['site']);
OriginalL'auteur | 2009-06-23
Vous devez vous connecter pour publier un commentaire.
Il utilise un relativement simple expression régulière. Le
$
signifie seulement correspondent à des barres obliques à la fin de la chaîne, afin de ne pas supprimer la première barre oblique dansstackoverflow.com/questions/
. Les accolades{}
sont juste des séparateurs; PHP nécessite la correspondance des caractères et l'avant et l'arrière des expressions régulières, pour une stupide raison.Aussi, les caractères sont utiles lorsque vous souhaitez fournir de drapeaux. par exemple, /[a-z]*/j'ai les moyens de correspondre avec tout le dans un à la casse.
(), {}, [], et <> sont des exceptions. À mon humble avis, les drapeaux devrait être un paramètre individuel. 95% du temps je n'ai pas de drapeaux et les délimiteurs sont juste un bruit.
Ah je vois, merci de me le faire savoir. En général, je aller avec / pour être traditionnelle, mais ils peuvent être une douleur lors de l'évacuation http:// et dans les balises de fermeture (si je pense que je peux sortir avec une expression régulière pour rechercher xhtml)
Je pense qu'ils sont allés avec les drapeaux comme ça parce que c'est la même chose dans l'expression régulière d'autres implémentations. Mais vous avez probablement raison, si elle a été redessinée, peut-être qu'il serait mieux d'utiliser son propre paramètre.
OriginalL'auteur John Kugelman
Vous pouvez passer une chaîne de caractères que vous souhaitez coupées d'une chaîne à l'
trim
famille de fonctions. Aussi, vous pouvez utiliserrtrim
à la garniture de la fin de la chaîne:aussi, rtrim supprime toutes les barres obliques $site = 'foo.bar/////", tandis que la regexp ne supprime un slash.
Ce doit être la accepté de répondre. Ne pas utiliser des regex sauf si vous devez vraiment.
OriginalL'auteur Daniel Vandersluis
Méthode la plus simple:
OriginalL'auteur Stephanie Gratzer
John a été le premier et je pense que sa solution doit être privilégiée, car elle est plus élégante, mais ici est un autre:
Mise à jour
Thx. J'ai mis à jour, et maintenant même les poignées de ce genre de choses
Ce qui rend sans doute encore plus frais que l'on a accepté la réponse 😉
-1 euh, ça ne devrait pas être une solution - et n'en est pas une. votre code renvoie $site (j'ai même testé).
thx pour l'entrée. Mis à jour!
OriginalL'auteur merkuro
Est que ce que Vous voulez?
OriginalL'auteur Piotr Salaciak
La solution la plus élégante est d'utiliser rtrim().
MODIFIER
Je l'avais oublié, rtrim();
Vous pouvez également jouer parse_url().
OriginalL'auteur alex
rtrim()
?OriginalL'auteur inkfist
Peut-être une meilleure solution serait d'utiliser .htaccess, mais php peut aussi le faire avec quelque chose comme ceci:
OriginalL'auteur John Hamelink