Rechercher : dans
Par :

Php modifier chaine de caractères

Dernière réponse le 6 jui 2009 à 11:41:07 Isa__, le 3 jui 2009 à 07:59:23 
 Signaler ce message aux modérateurs

Bonjour à tous,

J'ai dans ma base des numéros de téléphone sous la forme 607435674
Je voudrais les faire afficher plus proprement, sous forme 06 07 43 56 74.
J'ai essayé des tas de trucs compliqués et pas efficaces.
Je pense que la solution serait dans un ereg, mais ne n'arrive pas à m'en sortir.
Je suis sûre que la solution est pourtant simple et que l'un de vous pourra m'aider.

Merci d'avance

Isa

Configuration: Windows Vista
Firefox 3.0.11

Meilleures réponses pour « php modifier chaine de caractères » dans :
PHP - Nettoyer une chaîne de caractères VoirVoici une fonction en PHP qui peut être assez pratique, surtout quand on fait de l'URL Rewriting. Cette fonction permet de transformer les caractères de n'importe quelle chaîne de caractères en chaîne non accentuée, en enlevant les caractères...
Quelques fonctions utiles VoirCette astuce vous montrera comment utiliser quelques fonctions très utiles en PHP: Retourne la longueur de la chaîne Utilisation Résultat Passe tous les caractères en minuscules. Utilisation Résultat Passe tous les caractères en...
Les guillemets, apostrophes et les chaînes VoirComment jouer avec les guillemets et les apostrophes dans les chaînes 1. Préambule 2. Éviter une coupure dans la chaîne 3. Ajouter un guillemet dans la chaîne 3.1 Avec l'apostrophe 3.2 Avec l'ASCII 3.3 Directement 3.3.1 Méthode...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...

1

le père, le 3 jui 2009 à 08:26:30
  • +1

Bonjour

Je ne vois pas très bien ce que les ereg viennet faire là-dedans. les ereg, c'est plutôt pour vérifier si une chaîne respecte un certain format.
Tu as juste à découper ton numéro en petits morceaux avec des ciseaux "substr" et à recoller les morceaux en mettant des espaces :

$nouveaunumero = substr($numero,0,2).' '.substr($numero,2,2).' '.substr($numero,4,2).' '.substr($numero,6,2).' '.substr($numero,8,2);

Répondre à le père

2

kij_82, le 3 jui 2009 à 11:31:30
  • +1

Bonjour,

Ou une fonction plus généraliste, qui prends en paramètre une chaine de caractère, et qui insère un espace tous les 2 caractères :


function formatPhoneNumber ( $number ){

	$ancien = $i = strlen($number );
	$newNumber = "";
	
	do{
		$ancien = $i;	// --- Save start position
		$i -= 2;	        // --- New position
		if ( $i >= 0 )
			$newNumber = " ".substr($number ,$i,3).$newNumber ;
		else if ( $ancien >= 0 )
			$newNumber = substr($number ,0,$ancien).$newNumber ;
	}while( $i >= 0 );

	return $newNumber ;
}


A toi ensuite de contrôler la taille de ton numéro de téléphone pour ne pas te retrouver avec un seul premier chiffre par exemple (ex: 675654889 -> 6 75 65 48 89)

Mais sinon il me semble aussi que tu puisse faire ça via des expressions régulières. Celle-ci te permette de récupérer un groupe de caractère dans une chaine, afin de les reformater dans une chaine en sortie. Donc rien ne t'empêche de "grouper" deux caractères par deux caractères et de les concaténer avec un espace en sortie. N'étant pas spécialiste des rexexp par contre, je n'ai pas de code à te proposer, mais google est ton ami ;)

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :)    ~

Répondre à kij_82

3

Isa__, le 3 jui 2009 à 17:23:12

Merci beaucoup à tous les deux...
Avec ça je devrais pouvoir me débrouiller.
Je poste résultat ici ensuite si ça peut aider quelqu'un.

isa

Répondre à Isa__

4

Isa__, le 3 jui 2009 à 18:27:23

J'ai eu la flemme de chercher avec ereg.
J'ai testé la solution de le père.
Après modif puisque je n'avais pas de 0 en début de numéro, j'a fait ça :

$nouveau_no = "0".substr($ancien_no,0,1).' '.substr($ancien_no,1,2).' '.substr($ancien_no,3,2).' '.substr($ancien_no,5,2).' '.substr($ancien_no,7,2);

Et ca fonctionne parfaitement, donc en bonne feignasse, je ne cherche pas plus loin !

Merci à vous tous

Isa

Répondre à Isa__

5

 kij_82, le 6 jui 2009 à 11:41:07

Il faudra faire attention cependant. Avec un tel code, certes ça fonctionne, mais si tes valeurs, ou plutôt la forme de tes valeurs change plus tard (admettons que tu ne gère plus que des nombres à 3 chiffres), ça risque d'entrainer des erreurs d'indexation.

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :)    ~

Répondre à kij_82