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 le 1er caractère non-html


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut Récupérer le 1er caractère non-html
    Bonjour à tous,

    Je trime depuis un bon moment déja sur un problème à 1ere vue tout bête :
    J'ai une variable venant d'une BDD, contenant du texte.
    Je dois "styliser" la 1ere lettre de cette variable (comme une lettrine) donc il faut que je la recupere.

    J'ai donc fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $premiereLettre = substr($texte , 0,1);
    Mais malheureusement, la variable peut commencer par "<p>Le texte" et la 1ere lettre serait alors "<" ...

    Bref il faudrais que je puisse garder le style contenu dans la variable, mais qu'en plus je modifie la 1ere lettre "non-html".

    Vous avez une idée pour resoudre ce casse-tête ?

    Merci à tous

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Peut être simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $premiereLettre = substr(strip_tags($texte), 0,1);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Comment j'ai pu ne pas y penser ...

    Mais maintenant : 2ème partie du problème
    Ma variable etant "<p>La prairie bleue" , Je me retrouve avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class='style'>L</span><p>La prairie bleue
    Il faut maintenant que j'enleve tout ce qui se trouve avant cette 1ere lettre.

    Edit : j'ai presque réussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // $texte est ma variable contenant le texte
    	$premiereLettre = substr(strip_tags($texte), 0,1);
    	$aPartirDe = strpos($texte ,$premiereLettre)."'";
    	$texteRestant	= substr($texte , ($aPartirDe+1) ,strlen($texte));
    	echo "<span class='style'>".$premiereLettre."</span>";
    	echo $texteRestant;
    Ca me sort bien <span class='style'>L</span>a prairie bleue

    Par contre, j'ai un autre texte qui lui commence par &Eacute;
    Et la ca donne
    <span class='style'>&</span>Eacute;coutez-moi

    Donc la ca ne fonctionne pas ...

  4. #4
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    L'exemple ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str='<p>Salut</p>';
     
    $str=preg_replace('%^((?:</?[^<>]*>)*)([a-z])(.*)%i','$1<span class="style">$2</span>$3', $str);
    devrait renvoyer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><span class="style">S</span>alut</p>

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Eric, cela semble fonctionner avec ton exemple, mais pas avec les miens

    J'ai réussi a le faire marcher pour les textes que j'ai actuellement, à voir au grès des changements de celui-ci.

    Je donne mon code pour qu'il puisse servir un jour peut-être

    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
        <?php
    	$texte 	= "<p>&Eacutecoutez-moi bien !"
    	$texte 	= html_entity_decode($texte);
     
     
    	$premiereLettre = substr(strip_tags($texte), 0,1);
    	$aPartirDe 	= strpos($texte ,$premiereLettre)."'";
    	$texteRestant	= substr($texte , ($aPartirDe+1) ,strlen($texte));
     
     
     
    	echo "<span class='style'>".$premiereLettre."</span>>";
    	echo $texteRestant;
     
    	?>

  6. #6
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Effectivement, ma première expression rationnelle ne supporte pas les accents. Je l'ai modifiée afin qu'elle les prenne en compte.

    Jeu de caractères utilisé :
    • ISO-8859-1
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      setlocale(LC_CTYPE,'fr_FR','fr_FR.ISO-8859-1');
       
      $texte = html_entity_decode($texte,ENT_NOQUOTES,'ISO-8859-1');
      $texte = preg_replace('%^(\s*(?:</?[^<>]*>)*\s*)(\w)(.*)%si', '$1<span class="style">$2</span>$3', $texte);
    • UTF-8
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      setlocale(LC_CTYPE,'fr_FR','fr_FR.UTF8');
      
      $texte = html_entity_decode($texte,ENT_NOQUOTES,'UTF-8');
      $texte = preg_replace('%^(\s*(?:</?[^<>]*>)*\s*)(\w)(.*)%usi', '$1<span class="style">$2</span>$3', $texte);

    Plus d'infos la fonction setlocale().

  7. #7
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    pcre est indépendant les locales, ca sert a rien se faire setlocale encore plus pour l'utf-8

    sinon pareil tout le code sert a rien, ca se fait en CSS avec first-letter


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <style>
    <!--
    p:first-letter {
       font-weight:bold;
       color:#8888ff;
    }
    -->
    </style>
    <p>hello</p>

Discussions similaires

  1. Wget - télécharger des fichiers non-html
    Par narmataru dans le forum Réseau
    Réponses: 10
    Dernier message: 14/07/2018, 15h20
  2. Non affichage du 1er caractère structure record
    Par zano42 dans le forum Langage
    Réponses: 11
    Dernier message: 03/12/2009, 16h22
  3. [REGEX] Récupérer tous les caractères non US-ASCII
    Par nonhosonno dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/08/2006, 10h02
  4. [eclipse][configuration][javadoc] jar et non html
    Par Alwin dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 29/06/2004, 15h47
  5. Creation de table, caractère non reconnu
    Par Missvan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/02/2004, 13h28

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