Utilisation preg_match

Discussion dans 'URL Rewriting et .htaccess' créé par clement106, 30 Mars 2010.

  1. clement106
    clement106 WRInaute discret
    Inscrit:
    5 Avril 2007
    Messages:
    78
    J'aime reçus:
    0
    J'aimerais rewriter une url dans mon site qui utilise le cms Drupal.

    Drupal a une fonction pour faire celà: custom_url_rewrite_outbound

    J'aimerais transformer cette url:
    modeles_2r/2009-aprilia-sx-50-id-2?quicktabs_23=commentaires

    Comme celà:
    modeles_2r/2009-aprilia-sx-50-id-2#commentaires



    Code:
    function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
      global $node;
    
      // Change all 'node' to $node->title
      if (preg_match('|^modeles-2r(/.*)|', $path, $matches)) {
        $path = 'test';
      }
    }
    Avec cette configuration, si mon url est: modeles_2r/2009-aprilia-sx-50-id-2, elle devient: test donc c'est ok, il reste plus que le problème du ?quicktabs_23=commentaires que je n'arrive pas à transformer.

    Merci pour votre aide :wink:
     
  2. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    728
    J'aime reçus:
    0
    Est-ce la seule url de ce type que tu veux transformer ?
    Si oui :
    Code:
    $path = str_replace('?quicktabs_23=', '#', $path);
    Si non, peut-être que preg_match() serait mieux adapté :roll:
     
  3. clement106
    clement106 WRInaute discret
    Inscrit:
    5 Avril 2007
    Messages:
    78
    J'aime reçus:
    0
    Tu veux dire avec comme url quicktabs_23? Oui surement donc je pense que tu as raison d'utiliser la fonction str_replace.

    Le gros problème c'est que je viens de me rendre compte que la variable $path ne gère pas ce qu'il y a après le ?
    Pour trouver ce qu'il y a après c'est: $options->query.

    La fonction retourne apparemment la variable $path donc je ne sais pas comment m'y prendre, j'ai donc posteé ma question sur le forum de Drupal. J'espère avoir une réponse :D

    En tout cas, merci pour avoir essayé de m'aider :wink:
     
  4. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    728
    J'aime reçus:
    0
    pas besoin de la retourner, elle est directement modifiée car passé à la fonction avec le symbole '&'

     
  5. clement106
    clement106 WRInaute discret
    Inscrit:
    5 Avril 2007
    Messages:
    78
    J'aime reçus:
    0
    D'accord, je ne savais pas pour le '&'. J'ai donc ajouté le bout de code mais rien ne se passe.

    L'url est toujours: modeles_2r/2009-aprilia-sx-50-id-2?quicktabs_23=commentaires

    Le problème c'est que la str_replace s'occupe de la variable $path qui ne contient pas ce qu'il y a après le '?'

    Si je met: $path = 'essai';

    Mon url: modeles_2r/2009-aprilia-sx-50-id-2?quicktabs_23=commentaires

    devient: essai?quicktabs_23=commentaires
     
  6. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    728
    J'aime reçus:
    0
    peut-être :?:

    Code:
    $options->query = str_replace('?quicktabs_23=', '#', $options->query);
     
  7. clement106
    clement106 WRInaute discret
    Inscrit:
    5 Avril 2007
    Messages:
    78
    J'aime reçus:
    0
    Si je fais un print_r de la variable $options, voici le résultat:

    Code:
    Array
    (
        [query] => quicktabs_23=commentaires
        [attributes] => Array
            (
            )
    
        [html] => 
        [fragment] => 
        [absolute] => 
        [alias] => 
        [prefix] => 
        [external] => 
        [base_url] => http://localhost/beta2_les50cm3
    )

    Donc si je met:
    Code:
    $options['query'] = str_replace('quicktabs_23=commentaires', '#commentaires', $options['query']);
    l'url sera: modeles_2r/2009-aprilia-sx-50-id-2?%23commentaires

    Pour enlever le ? j'ai la solution:
    Code:
    $options[query2] = $options[query];
    $options[query] = '';
    $path = 'essai' . $options[query2];
    Résultat: essai%23commentaires

    Tu aurais une idée comment remplacer ce %23 par #? J'ai essayé avec utf8_encode() et urlencode() mais sans succès.

    Merci pour ta patience :wink:
     
  8. clement106
    clement106 WRInaute discret
    Inscrit:
    5 Avril 2007
    Messages:
    78
    J'aime reçus:
    0
    Je vais finalement renoncer à rewriter cette url puisque la fonction ne permet apparemment pas de mettre des caractères spéciaux comme '#'.

    Par contre je vais faire des liens manuel.

    Il faut donc que je configure mon .htaccess mais pour le moment je n'y arrive pas.

    Voilà donc l'url que je tape manuellement:
    modeles_2r/2009-aprilia-sx-50-id-2#commentaires

    Il faudrait que mon .htaccess transforme cette url par:
    modeles_2r/2009-aprilia-sx-50-id-2?quicktabs_23=commentaires

    J'ai fait deux ou trois essais mais sans succès. Le truc c'est que si je met '#' dans mon .htaccess il l'interprète comme du texte a ne pas prendre en compte.

    Merci pour ton aide.
     
Chargement...
Similar Threads - Utilisation preg_match Forum Date
Utilisation des URL canoniques d'un sous domaine à un autre Référencement Google 10 Novembre 2020
Utilisation de AMP sur un petit site vitrine Référencement Google 3 Mars 2020
WordPress Optimisation et utilisation d'une page Auteur avec Bio Rédaction web et référencement 29 Octobre 2019
Utilisation de Adwords pour trouver des mots clés Débuter en référencement 23 Août 2019
Utilisation d'un service... 1700€ plus tard inquiétude... Netlinking, backlinks, liens et redirections 13 Juillet 2019
Duplicate content et instuction d'utilisation fiche produit Rédaction web et référencement 10 Avril 2019
Texte utilisation cookies et protection des données : pb de duplicate ? Débuter en référencement 8 Janvier 2019
Microsoft modifie ses conditions d'utilisation (CGU) Droit du web (juridique, fiscalité...) 20 Novembre 2018
Un article intéressant sur l'indexation des images et l'utilisation du "lazyload" Crawl et indexation Google, sitemaps 9 Novembre 2018
Utilisation de l'attribut "hreflang" Référencement international (langues, pays) 27 Septembre 2018