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 :

Récupérer des href sans ? [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 48
    Par défaut Récupérer des href sans ?
    Bonjour,

    j'ai une liste de liens dans un contenu :

    essai.net
    essai.net/
    essai.net/index.php
    essai.net/index.php/
    essai.net/index.php?
    essai.net/index.php?action=affichepage&sujet=Accueil
    essai.net/index.php/default/default/affichepage?sujet=Accueil
    essai.net/accueil.htm

    J'aimerai récupérer la liste des href de ces liens qui ne possèdent pas de ? afin justement d'en concaténer un à la fin

    J'ai utilisé la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pattern = '#<a href=\"([^?])\">#Usi';
    $replacement='<a href="$1?">';
    $content=preg_replace ($pattern,$replacement,$content);
    mais cela ne me retourne rien.

    A titre d'info, si je cherche à récupérer la liste de mes liens AVEC un ? dans le href tout fonctionne.

    Pour cela j'ai utilisé la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pattern = '#<a href=\"([^?])\">#Usi';
    $replacement='<a href="$1?">';
    $content=preg_replace ($pattern,$replacement,$content);
    Pouvez vous m'aider ?

    Merci par avance.

  2. #2
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    C'est à cause de tes backslashes \, y en a pas besoin dans ce cas !!

    La regexp suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('#<a href="([^?]*)">#Usi', '<a href="$1?">', $texte)
    sur le contenu suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <a href="essai.net">
    <a href="essai.net/">
    <a href="essai.net/index.php">
    <a href="essai.net/index.php/">
    <a href="essai.net/index.php?">
    <a href="essai.net/index.php?action=affichepage&sujet=Accueil">
    <a href="essai.net/index.php/default/default/affichepage?sujet=Accueil">
    <a href="essai.net/accueil.htm">
    Donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <a href="essai.net?">
    <a href="essai.net/?">
    <a href="essai.net/index.php?">
    <a href="essai.net/index.php/?">
    <a href="essai.net/index.php?">
    <a href="essai.net/index.php?action=affichepage&sujet=Accueil">
    <a href="essai.net/index.php/default/default/affichepage?sujet=Accueil">
    <a href="essai.net/accueil.htm?">
    Et voila ;-)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 48
    Par défaut
    Merci pour ta réponse Maxoo.

    En arrivant au boulot ce matin, mon patron avait déjà trouvé la solution.

    Lui a utilisé comme expression régulière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '#<a href="([^?]+)">#Usi'
    Je me demandais plusieurs choses, si tu as le temps et l'envie de répondre

    Quel est la différence entre ta solution et celle de mon patron (lui utilise un + ou toi tu utilise une *)

    Autre question, tu dis que les backslashes \ ne sont pas utiles. Pourquoi ? a quoi sert donc un backslashes alors.

    En tout cas merci vraiment pour ta réponse.

    Bonne journée

  4. #4
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    [QUOTE=pusse;4187095]En arrivant au boulot ce matin, mon patron avait déjà trouvé la solution.[/CODE]
    Depuis quand les patron font le boulot des développeurs

    Citation Envoyé par pusse Voir le message
    Quel est la différence entre ta solution et celle de mon patron (lui utilise un + ou toi tu utilise une *)
    + veut dire 1 ou n caractères
    * veut dire 0 ou n caractères.

    Citation Envoyé par pusse Voir le message
    Autre question, tu dis que les backslashes \ ne sont pas utiles. Pourquoi ? a quoi sert donc un backslashes alors.
    Le backslashe ne sert qu'a échapper quelque chose.
    Soit un caractère qui sert à la regexp soit le délimiteur de regexp.

    Par exemple si je veux me servir du + ou # en tant que caractère et non en tant qu'outil de la regexp.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '#Trouve les \# ou les \+#Usi'
    le " n'étant ni l'un ni l'autre, il n'y a pas besoin de l'échapper.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 48
    Par défaut
    Le backslashe ne sert qu'a échapper quelque chose.
    Je savais tout cela, mais je pensais qu'il existait une autre raison.

    En tout cas je passe en résolu.

    Merci Maxoo

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

Discussions similaires

  1. Enregistrer et récupérer des données (sans BDD)
    Par Prodiguy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2013, 15h31
  2. Récupérer des infos sans ouvrir les fichiers
    Par hakuna_du_94 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/12/2008, 08h56
  3. Récupérer des infos sans passer par du JS
    Par Raphael_74 dans le forum WebDev
    Réponses: 2
    Dernier message: 06/02/2008, 09h06
  4. Envoyer et récupérer des variables sans php
    Par goueg dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/08/2007, 10h08
  5. [TinyXML] Récupérer des données sans nom
    Par Bakura dans le forum XML
    Réponses: 4
    Dernier message: 30/03/2007, 18h59

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