begin process at 2012 05 31 14:25:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Remplacer des blocs {masculin/feminin} par masculin ou feminin


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Remplacer des blocs {masculin/feminin} par masculin ou feminin

lundi 19 octobre 2009 à 19:34:13 | Remplacer des blocs {masculin/feminin} par masculin ou feminin

DarkCid

Membre Club
Bonjour,

j'ai une chaîne de caractère genre "Bonjour {Monsieur/Madame}, ..."

je voudrais pouvoir, selon le sexe que je passe en paramètre, remplacer le bloc {Monsieur/Madame} soit par Monsieur soit par Madame. il peut y avoir plusieurs blocs de ce type avec des mots différents de chaque côté du "/" bien sûr.

j'ai fait un truc de ce genre

Code PHP :
$title_array = str_split($this->title);
$title = '';
$male = '';
$female = '';
$sex_indicator = '';
foreach($title_array as $i){
	switch($i){
		case '{':
			$sex_indicator = 'm';
			break;
		case '/':
			if($sex){
				$title.=$male;
			}
			$sex_indicator = 'f';
			break;
		case '}':
			if(!$sex){
				$title.=$female;
			}
			$sex_indicator = '';
			$male = '';
			$female = '';
			break;
		default:
			switch($sex_indicator){
				case 'm':
					$male.=$i;
					break;
				case 'f':
					$female.=$i;
					break;
				default:
					$title.=$i;
					break;
			}
			break;
	} 
}


alors c'est sûr, sa marche, mais qu'est-ce que c'est crade ! vous auriez pas une petite solution qui fasse pas 20 lignes ?


Espérer le meilleur
Prévoir le pire
lundi 19 octobre 2009 à 20:05:54 | Re : Remplacer des blocs {masculin/feminin} par masculin ou feminin

Arto_8000

Tu peux toujours utiliser la fonction preg_replace pour faire ce genre de truc. C'est assez simple, il faut juste bien construire son expression régulière.

Pour le premier élément dans les accolades, utilise $1 comme paramètre de remplacement et $2 pour le deuxième :

preg_replace('/\{(.*)\/(.*)\}/', '$1', $tonTexte); OU
preg_replace('/\{(.*)\/(.*)\}/', '$2', $tonTexte);
mardi 20 octobre 2009 à 11:32:26 | Re : Remplacer des blocs {masculin/feminin} par masculin ou feminin

DarkCid

Membre Club
Mais je sais pas à l'avance par quoi remplacer le texte, en fait je ne sais pas du tout ce qu'il y a entre les { }, je sais uniquement le sexe


Espérer le meilleur
Prévoir le pire
vendredi 23 octobre 2009 à 15:00:02 | Re : Remplacer des blocs {masculin/feminin} par masculin ou feminin

Arto_8000

C'est justement ça que je t'ai proposé ...

Code PHP :
<?php
$tonTexte = 'Ton texte ici ...';
if ($sexe == 'masculin') {
    $tonTexte = preg_replace('/\{(.*)\/(.*)\}/', '$1', $tonTexte);
} else {
    $tonTexte = preg_replace('/\{(.*)\/(.*)\}/', '$2', $tonTexte);
}
?>
vendredi 23 octobre 2009 à 15:08:17 | Re : Remplacer des blocs {masculin/feminin} par masculin ou feminin

DarkCid

Membre Club
Ah ok,

sa marche presque, j'aurais besoin d'une légère modif si sa te dérange pas : en fait dans les blocs {M/F}, l'une des deux parties peut etre vide

exemple : "je suis un{/e} {homme/femme}"

j'ai essayais avec ton code, et le premier bloc pose problème, dans le cas feminin il m'affiche "Je suis unfemme" et dans le cas masculin il m'affiche "Je suis un/e} {homme"

Merci d'avance


Espérer le meilleur
Prévoir le pire
vendredi 23 octobre 2009 à 17:50:36 | Re : Remplacer des blocs {masculin/feminin} par masculin ou feminin

DarkCid

Membre Club
En fait sa marche pas des masses :
Code PHP :
<?php
$sexe = 'm';
$txt = 'Je suis {un/une} {homme/femme}';
if ($sexe == 'm') {
    $txt = preg_replace('/\{(.*)\/(.*)\}/', '$1', $txt);
} else {
    $txt = preg_replace('/\{(.*)\/(.*)\}/', '$2', $txt);
}
echo $txt;
?>


Avec sexe =='m' sa me donne : "Je suis un/une} {homme"
Avec sexe =='f' sa me donne : "Je suis femme"


Espérer le meilleur
Prévoir le pire
samedi 24 octobre 2009 à 01:33:56 | Re : Remplacer des blocs {masculin/feminin} par masculin ou feminin

Arto_8000

Réponse acceptée !
Ah, j'avais pas testé avec plusieurs. Il y a une petite modification à faire pour que ça fonctionne bien dans l'expression régulière.

Code PHP :
<?php
$sexe = 'm';
$txt = 'Je suis {un/une} {homme/femme}';
if ($sexe == 'm') {
    $txt = preg_replace('/\{(.*?)\/(.*?)\}/', '$1', $txt);
} else {
    $txt = preg_replace('/\{(.*?)\/(.*?)\}/', '$2', $txt);
}
echo $txt;
?>
lundi 26 octobre 2009 à 09:24:33 | Re : Remplacer des blocs {masculin/feminin} par masculin ou feminin

DarkCid

Membre Club
Cool merci, sa marche au poil !


Espérer le meilleur
Prévoir le pire


Cette discussion est classée dans : case, title, break, sex, indicator


Répondre à ce message

Sujets en rapport avec ce message

checkbox et initiales [ par titigrou ] voila ce que tu avais fait la dernière fois:function visible(nom, row, col){ if (document.getElementById(nom).checked==1) { document.getElementById(' problème avec id resource, non compris!!! [ par titigrou ] kikou!!j'ai un gros problème:j'ai un tableau ou je veux afficher le nom des voitures:for ($j=0;$j{ switch ($j) { case 0 : echo"".$voiture."" Ca marchait, ça marche pu :'( [ par Inekman ] Bonjour à tous,J'ai écris une fonction qui renvoie une date avec 2 affichages possible en fonction du paramètre donné à la fonction.La fonction, la vo Un bug dans le script, quelqu'un voit la reponse? [ par benbax ] Voila le script : $dt=include("compteurDT.cpt"); //Contient le nombre x$msn=include("compteurMSN.cpt"); //Contient le nombre x$vnc=include("co Signet en Php ? [ par dumbop84 ] pff .... c dur le PHP surtout quand on est pas prgrammeur .... mon probléme a moi c  que j'aimerai savoir si on peut faire des signer en php... j'ai u Liste à choix multiple... [ par Ang3lo ] Bonjour à tous,J'aimerai savoir quel est le code à inserer pour récupérer une donné venant d'une liste à chois multiple.Moi je met ça :switch ($source Afficher une page en fonction du jour [ par Rimb0 ] Bonjour à tous ! Comme le précise le titre de ce post, je cherche comment il serait possible d'afficher une page en fonction du jour ! Voici le scrip Livre d'or [ par GillesWebmaster ] Salut à tous j'ai un prob avec mon livre d'or:je vous mets les fichiers ce serait sympa de jetter un oeil...------------------------------------------ Modification de la classe mime_mail [ par BananaTree ] slt tout le monde.j'utilise la classe mime_mail (ci desous) pour transmettre un mail depuis flash. coté flash pas de pb bien sur. mais en php, je misè Le cas "Indifferent" dans les formulaires [ par islanmao ] Bonjour tout le monde !Je voudrais savoir comment on fait pour gérer le cas "indifférent" dans les formulairesEnfait j'ai une base de données sur les


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales