Probleme preg_replace - remplace chaine par une autre dans un texte

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Recif, 6 Mai 2010.

  1. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Bonjour,

    Je galère pour un problème spécifique... quelqu'un pourrait-il m'aider svp?
    Problème:

    J'ai un texte :

    J'aimerai remplacer les deux urls par http://www.xxxx.com/bob/HKL5442/toto : la seule info importante c'est HKL5442 qui est à récupérer, transformer dans une nouvelle url et remettre à la place...

    J'ai un peu manipulé preg_replace mais je m'en sors pas... :(

    Une idée?
    Merci
    Merci
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Quelque chose comme:

    Code:
    preg_replace('#http://www\.xxxx\.com/[-a-z]+/([A-Z0-9]+)(?:/[a-z]+)?#','http://www.xxx.com/bob/$1/toto',$string)
    non?

    Evidemment la regex exacte va beaucoup dépendre des formes exactes que peuvent prendre les URLs (lettres, chiffres, etc.).

    Jacques.
     
  3. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Super, je test ça et je te dis, merci.
     
  4. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Ok, ca fonctionne, j'ai juste modifié un peu :
    preg_replace('#http://www\.xxxx\.com/[-a-z]+/([A-Za-z0-9]+)(?:/[a-z]+)?#','http://www.xxx.com/bob/$1/toto',$texte);
    Car il peut y avoir majuscules et minuscule. Merci poru ton aide en tout cas!
     
  5. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
  6. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Comme je disais, sans savoir quel est le format exact des URLs et leur contexte, difficile de te donner une regex précise.

    Logiquement, déjà, si c'est /bibi/prod/HKL5442/, il ne devrait pas reconnaître (la regex ne prévoit qu'un seul composant dans le chemin avant le HKL5442). S'il peut y avoir un nombre variable de niveaux avant, il va falloir trouver quel est le format exact du HKL5442 (ce qui permet de le différencier des autres composants).

    Pour la partie finale, se pose le problème de savoir comment on trouve la fin de l'URL. Une solution consiste à accepter tout caractère autorisé dans une url, mais dans certains cas ça pose des problèmes (par exemple si je fais une phrase ou je mets une url suivie d'une virgule, ou d'un point, ou entre paranthèses, il n'est pas clair si la virgule, le point ou les parenthèses font partie de l'URL ou pas...). Tu peux au minimum ajouter ?=&0-9%_ dans la classe à la fin, mais ça ne garantit pas que ça "trouve" tout.

    Bref, sans un contexte plus précis, difficile de te donner la regex qui marche à coup sûr.

    Jacques.
     
  7. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    ok, merci, je vais essayer ça.

    Ca ferait preg_replace('#http://www\.xxxx\.com/[-a-z]+/([A-Za-z0-9]+)(?:/[a-z]+)?#','http://www.xxx.com/bob/$1/toto?=&0-9%_',$texte); ?
     
  8. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Non, dans le dernier [a-z]:

    preg_replace('#http://www\.xxxx\.com/[-a-z]+/([A-Za-z0-9]+)(?:/[-a-zA-Z?=&0-9%_+]+)?#','http://www.xxx.com/bob/$1/toto',$texte);

    (j'ai rajouté une - et + en plus, ainsi que A-Z, même si pour ce dernier la bonne solution c'est probablement de passer en case insensitive en mettant un "i" après le # final)

    Jacques.
     
  9. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    ok, merci!
     
Chargement...
Similar Threads - Probleme preg_replace remplace Forum Date
Problème d'espaces en trop avec preg_replace() Développement d'un site Web ou d'une appli mobile 16 Novembre 2011
Problème particulier avec Preg_replace Développement d'un site Web ou d'une appli mobile 1 Mars 2011
[résolu] Problème avec preg_replace (le point) Développement d'un site Web ou d'une appli mobile 6 Janvier 2009
Petit problème preg_replace_callback appellé deux fois.. Développement d'un site Web ou d'une appli mobile 26 Avril 2006
petit problème preg_replace : réglé Administration d'un site Web 4 Mai 2005
WordPress Problème affichage style avec Elementor (titre, bordures, separateur) Administration d'un site Web Lundi à 12:12
Problème d'indexation de backlinks Débuter en référencement 24 Juillet 2022
Problème d'indexation de backlinks Problèmes de référencement spécifiques à vos sites 21 Juillet 2022
Probleme de visibilité de ma page Facebook Facebook 5 Juillet 2022
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022
Problème d'affichage des campagnes Google Ads dans un tableau de bord Data Studio AdWords 26 Avril 2022
Problème de vitesse d'affichage des pages sur Analytics Google Analytics 26 Avril 2022
Problème : Google Crawl et Index des pages en No Index et bloqué par le robot.txt Crawl et indexation Google, sitemaps 26 Avril 2022
Problème avec GA4 : nb de visiteurs temps réel et par jour Google Analytics 19 Avril 2022
Problème indexation pages précises en React.js Débuter en référencement 19 Avril 2022
Problème de référencement Demandes d'avis et de conseils sur vos sites 8 Avril 2022