Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2011, 07h34   #1
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Par défaut Utilisation correcte de substr

Bonjour à tous,

J'ai une chaine de mots-clés aléatoires générée par une boucle qui se compose comme suit :

Code :
1
2
3
4
5
6
7
8
 
$liste = "";
$i = 0;
 
foreach($tab_mots_cles as $mc){
   $liste .= '<span id="'.$i.'">'.$mc.' , </span>';
   $i++;
}
Et ce que je voudrais faire avec substr, mais est-ce la fonction la plus appropriée ?, c'est supprimer la dernière virgule.
Dans le source, ma chaine va donc s'afficher comme suit :

Citation:
<span id="0">Toto , </span><span id="1">Tata , </span><span id="2">Tutu , </span>
Et bien sûr, si je fais :
Code :
1
2
 
$liste = substr($liste, 0 , -7);
Je supprime le dernier </span> avec. Ce que je ne veux pas.
Juste la dernière virgule !
Merci de votre aide.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 07h38   #2
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Solution de bricolage :

Code :
1
2
3
 
$liste = substr($liste, 0 , -9);
$liste .= '</span>';
Mais il doit être possible de faire plus élégant, non ?
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 08h23   #3
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Bonjour,

C'est normal que la virgule soit dans l'élément <span /> ?

Si non, tu peux essayer ceci
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
$tab_mots_cles = array( 'Toto', 'Tata', 'Titi' );
 
function to_html(&$value, $key) {
	$value = '<span id="' . $key . '">' . $value . '</span>';
}
 
array_walk($tab_mots_cles, 'to_html');
 
echo implode(', ', $tab_mots_cles);
?>
Tu obtiens alors
Code :
<span id="0">Toto</span>, <span id="1">Tata</span>, <span id="2">Titi</span>
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 09h14   #4
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Il y a plusieurs méthodes, et personnellement j'aime bien celle-là :

Code :
1
2
3
4
5
6
7
8
9
$tab = array( 'Toto', 'Tata', 'Titi' );
$sep = $chaine = '';
 
foreach ( $tab as $t ) {
   $chaine .= $sep . $t;
   $sep = ', ';
}
 
echo $chaine; // Toto, Tata, Titi
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 10h52   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par Bisûnûrs Voir le message
Il y a plusieurs méthodes, et personnellement j'aime bien celle-là :

Code :
1
2
3
4
5
6
7
8
9
$tab = array( 'Toto', 'Tata', 'Titi' );
$sep = $chaine = '';
 
foreach ( $tab as $t ) {
   $chaine .= $sep . $t;
   $sep = ', ';
}
 
echo $chaine; // Toto, Tata, Titi

bien joué t'as recrée implode

Code :
1
2
$tab = array( 'Toto', 'Tata', 'Titi' );
echo implode(', ', $tab);
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h05   #6
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Citation:
Envoyé par stealth35 Voir le message
bien joué t'as recrée implode
Dans cet exemple simple, oui, effectivement .. Mais si on prend l'exemple du post original ça donne ça :

Code :
1
2
3
4
5
6
7
8
$liste = $sep = "";
$i = 0;
 
foreach($tab_mots_cles as $mc){
   $liste .= $sep . '<span id="'.$i.'">'.$mc.'</span>';
   $i++;
   $sep = ', ';
}
Sinon pour utiliser l'implode() il faudrait construire un tableau ..

Code :
1
2
3
4
5
6
7
8
9
$liste = array();
$i = 0;
 
foreach($tab_mots_cles as $mc){
   $liste[] = '<span id="'.$i.'">'.$mc.'</span>';
   $i++;
}
 
implode( ', ', $liste );
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h15   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
le $i sert a rien autant utiliser la clé du tableau,
pour les id HTML ils doivent obligatoirement commencé par une lettre
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h25   #8
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Je sais bien. J'ai juste repris l'exemple tel quel.
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h30   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par Bisûnûrs Voir le message
Je sais bien. J'ai juste repris l'exemple tel quel.
je disais ça pour renaud26
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 12h49   #10
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Encore qu'on ne sait pas quels sont les index... Ils ne sont peut être pas numériques et ne correspondent peut être aucunement à ce qu'il cherche à faire avec ce $i.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 13h17   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par transgohan Voir le message
Encore qu'on ne sait pas quels sont les index... Ils ne sont peut être pas numériques et ne correspondent peut être aucunement à ce qu'il cherche à faire avec ce $i.
pas grave un array_values est c'est réglé
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h44.


 
 
 
 
Partenaires

Hébergement Web