IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

imposer un espace [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut imposer un espace
    Bonjour,

    Ces 2 lignes entrent en conflit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $texte = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" target="_blank">$0</a>', $texte);
     
    $texte = preg_replace('`\[img\](.+)\[/img\]`isU', '<img src="$1"/>', $texte);
    Comment faire svp pour que le premier preg_replace ne remplace une url qu'à condition qu'il y ait un espace avant et après ?

    Car le soucis c'est que je me retrouve avec des balises quand une image est postée sur mon forum.

    Merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par guitz Voir le message
    Comment faire svp pour que le premier preg_replace ne remplace une url qu'à condition qu'il y ait un espace avant et après ?
    En ajoutant les espaces à la regex ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte = preg_replace('#\shttp://[a-z0-9._/-]+\s#i', '<a href="$0" target="_blank">$0</a>', $texte);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    Désolé mais ça ne marche pas. C'est quoi #i svp ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par guitz Voir le message
    Désolé mais ça ne marche pas. C'est quoi #i svp ?

    tout est dans la doc
    http://www.php.net/manual/fr/referen....modifiers.php

  5. #5
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    Oui ça me ferait pas de mal d'apprendre les bases des regex

  6. #6
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    Bonjour bon bin j'ai trouvé comme un grand :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $texte = preg_replace('#\s*[^\]]http://[a-z0-9._/-]+[^\]]\s*#i', '<a href="$0" target="_blank">$0</a>', $texte);
    de chaque coté pour qu'il y ait soit 0 soit un soit nombre strictement positif d'espaces avant et après l'url et pour pas de conflit avec les balises phpbb image j'ai mis :

    de chaque coté

    Et maintenant pour être vraiment tip top, il faut que j'impose au maximum arpès le point de l'url 3 caractères, le maximum c'est .com ? Car si un utilisateur met une url et oublie l'espace à la fin je vais me retrouver avec un lien du genre http://www.google.comsalut

    Merci

  7. #7
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    Ce que fait votre code c'est qu'à chaque fois que je met une url correspondant à un fichier image, il me met les balise :

    Or je souhaite que quand on met une url unique sans balise bbcode on ai un lien html vers cette url. Et que si on souhaiteafficher l'image à ce moment là on met les balises bbcode :

  8. #8
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    Au temps pour moi c'est moi qui m'étais emmellé les pinceaux, ça marche en fait Celira ya plus de conflit par contre à présent les liens seuls ne fonctionnent plus, une idée ?

    Merci de m'avoir répondu

    Edit : En fait les liens fonctionnent mais le soucis c'est que si d'entrée le mec met un lien dans son message ya pas d'espace avant mais un après, alors comment pourrais-je modifier le regex pour que "il faut soit un espace avant soit après l'url" ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Imposer 4 espace à mon toolssLabel
    Par Mario Rousson dans le forum VB.NET
    Réponses: 0
    Dernier message: 23/08/2010, 23h09
  2. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  3. Réponses: 2
    Dernier message: 06/12/2002, 07h50
  4. Accéder à un espace mémoire sous XP
    Par keny dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 02/08/2002, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo