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 :

Fonction pour tronquer une chaine de caractère


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut Fonction pour tronquer une chaine de caractère
    Bonjour,

    En cherchant sur le forum je suis tombé sur un petit bout de code qui permet de tronquer une chaine de caractère si elle est trop longue. Je l'ai donc testé sur un exemple simple et ça fonctionne parfaitement, et lorsque j'ai voulu la mettre dans mon propre code, et bien j'obtiens une erreur que je ne comprend pas.

    Ci dessous le code (qui fonctionne parfaitement) qui permet d'afficher une image avec un titre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div class="contenu"> 
    <figure>
    <?php echo '<img alt="" src=" '.$ligne['Link_Poster'].' "border="0" /> '; ?>
    <figcaption> <?php echo $ligne['Title'] ;?> </figcaption>
    </figure>
    </div>
    et là le code (qui retourne une erreur) lorsque j'essaie de tronquer le titre qui se trouve entre les balises <figcaption>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    function tronquer($texte)
    {
    $max_caracteres=25;
    // Test si la longueur du texte dépasse la limite
    if (strlen($texte)>$max_caracteres){
    // Séléction du maximum de caractères
    $texte = substr($texte, 0, $max_caracteres);
    // Récupération de la position du dernier espace (afin déviter de tronquer un mot)
    $position_espace = strrpos($texte, " ");
    $texte = substr($texte, 0, $position_espace);
    // Ajout des "..."$texte = $texte."...";}?
    }
    //on retourne le texte
    return $texte;
    }
    ?>
     
    <figure>
    <?php echo '<img alt="" src=" '.$ligne['Link_Poster'].' "border="0" /> '; ?>
    <figcaption> <?php echo $ligne[echo tronquer(''Title'')] ;?> </figcaption>
    </figure>
    l'erreurs en question :

    Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ']' in /Applications/MAMP/htdocs/tuto1/index.php on line 21
    Une idée ?

    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    tu as une erreur dans ton code.
    Remplace par ceci et pense à toujours échapper les données au moment du rendu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <figure>
    	<img src="<?php echo rawurlencode($ligne['Link_Poster']) ?>" alt="" border="0" />
    	<figcaption> <?php echo htmlspecialchars(tronquer($ligne['Title'])) ?> </figcaption>
    </figure>

  3. #3
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Merci pour ta réponse, j'ai testé et effectivement ça fonctionne.

    Mais je pense que je vais apprendre quelque chose car je n'ai pas compris :

    pense à toujours échapper les données au moment du rendu.
    Qu'entends tu par échapper les données ?

    PS : Je suis novice en php, on va dire que j'ai pas réellement suivie de cours je vais juste chercher ce dont j'ai besoin un peu partout sur le net et sur ce forum pour créer un site.

    Merci pour ton aide.

  4. #4
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Après plusieurs test je commence à comprendre l'intérêt d'utiliser rawurlencode et htmlspecialchars.

    Cependant lorsque j'utilise rawurlencode dans mon code, les images ne s'affichent plus .

    En fait lorsque je fais ouvrir l'image dans un nouvel onglet l'URL n'est pas correct. Je travail en local avec MAMP mais les images sont sur un serveur Free, du coup il m'écrit l'URL de l'image comme ceci:

    Not Found

    The requested URL /tuto1/http://MonServeur.free.fr/pictures/Poster_Grand_Format.jpg was not found on this server.
    Le souci c'est que depuis que j'ai mis rawurlencode et bien il me met /tuto1/ devant l'URL de l'image. /tuto1/ correspond au dossier local dans lequel je travail.

    Ci dessous le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <figure>
    <img src= "<?php echo rawurlencode($ligne['Link_Poster']) ?>" alt="" border="0" />
    <figcaption> <?php echo htmlspecialchars(tronquer($ligne['Title'])) ?> </figcaption>
    </figure>
    Merci d'avance pour votre aide.

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut

    Laisse tomber j'suis une quiche : rawurlencode n'est pas adapté à tes données dans ce cas de figure

  6. #6
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Quand tu dis ce cas de figure, tu veux dire le fait que le site est pour l'instant en local ?

    et lorsqu'il sera en ligne ?

    Est ce que celà peux sécuriser mieux le site ou pas ?

    Encore merci

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    ça n'a rien à voir entre la version locale et en ligne. Généralement, on s'arrange pour avoir la locale identique à la future en ligne (cela évite bien des problèmes).
    rawurlencode() ne peut s'appliquer sur une URL entière mais sur les parties de l'url. Si tu l'applique sur une url entière genre http://..., elle sera échappée et perdra sa signification, tu ne dois échapper individuellement que ses parties et les assembler ensuite comme il est indiqué dans la doc.

    Comme souvent informatique : certains éléments, dans un contexte spécifique, ont une signification particulière et dans ce cas, il ne doivent pas perdre leur "sens" sous peine de perdre ou de changer la nature de l'élément et pour le coup le rendre inutilisable (ex : une URL, un regex...)

  8. #8
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Généralement, on s'arrange pour avoir la locale identique à la future en ligne (cela évite bien des problèmes).
    C'est ce que je m'efforce de faire

    Encore merci pour tes réponses enrichissantes.

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

Discussions similaires

  1. Appel à une fonction à partir d'une chaine de caractères
    Par becks dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/09/2007, 12h14
  2. Tronquer une chaine de caractères
    Par Tsuna78 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/07/2007, 12h15
  3. Réponses: 23
    Dernier message: 13/11/2006, 03h33
  4. Réponses: 3
    Dernier message: 03/07/2006, 16h01
  5. [RegEx] Tronquer une chaine de caractère sauf si c'est une URL.
    Par psychoBob dans le forum Langage
    Réponses: 16
    Dernier message: 03/06/2006, 12h01

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