Page 1 sur 1

Union de deux ligne de texte sur une seule.

Posté : 24 mars 2006, 00:23
par Invité
bonjours,
Voici mon petit problème:
je recupère une chaine de caractère issu d'un fichier ds variables $txt,
Je souhaiterai ajouter à la suite de cette chaine par exemple un mot. Cela peut paraître fort simple, mais mon problème est de gérer le retour charriot.
$txt = "Chaîne issu d'un fichier texte";
si je fais ensuite:
$txt = $txt."titi";
echo $txt // me donne titi sur la ligne suivante.
Il s'agit donc entre temps de supprimer le retour charriot. J'ai tenter avec $txt = addcslashes($txt, "\"'\n\r"); //=> Le plus proche que j'ai trouvé.
J'obtient ce que je veut, mais avec les slashs en prime (c'est évidemment le but de cette fonction entre autre). J'ai regarder coté expressions régulières sans trop de succès, mais je pense qu'il doit y avoir une fonction ou code simple à l'image de addcslashes() (sans les \).
Merci pour votre attention.

Posté : 24 mars 2006, 07:49
par jpaul
Ast tu essayé avec ereg_replace ?
Par exemple :
ereg_replace("\n\r", "", $txt);
Ou encore mieux trim (avant la concaténation bien sûr) ?
trim($txt);
$txt = $txt."titi"; 

Posté : 24 mars 2006, 07:55
par mario
Jète un oeil sur la fonction str_replace()
à cela, ajoute une concaténation. N'oublie pas le retour chariot à la fin de la chaîne.

Posté : 24 mars 2006, 11:04
par jpaul
Jète un oeil sur la fonction str_replace()
à cela, ajoute une concaténation. N'oublie pas le retour chariot à la fin de la chaîne.
C'est vrai, ereg_replace est plus couteux, il faut lui préférer str_replace quand c'est possible. Le choix de mario est plus judicieux 8)

deux lignes de texte en une seule.

Posté : 24 mars 2006, 13:21
par Invité
Merci de vos réponses et suis persuadé que toutes les solutions proposées
soient dans le vrai.
Mon problème se résout avec le cas 2 (ci-dessous). Donc tout va bien.

Il reste juste un petit problème de culture personnel.
J'avais effectivement testé ereg_replace() et str_replace(), re-testé içi bas, sans résultats ??? Il semble (le pourquoi du "...") que le retour
charriot ne soit pas détecté (les "..." ne sont pas afficher alors qu'ils
devraient remplacer le RC) ?????????. Syntaxe ???, le \n\r ???, autre ???.

Voici mes diffèrentes tentatives:
//Cas 1:
$txt = "Chaîne issu d'un fichier texte";
$txt = ereg_replace("\n\r", "...", $txt);
$txt = $txt."titi";
echo $txt;  // => Résultat sur deux lignes
//Cas 2:
$txt = "Chaîne issu d'un fichier texte";
$txt = trim($txt)."titi";
echo $txt;  // => Résultat sur une ligne
//Cas 3:
$txt = "Chaîne issu d'un fichier texte";
$txt = str_replace("\n\r", "...", $txt); 
$txt = $txt."titi";
echo $txt;  // => Résultat sur deux lignes
[php]

Il ne faut pas être plus royaliste que le Roi, mais cela me chagrine un peut.

deux lignes de texte en une seule.

Posté : 24 mars 2006, 13:28
par Invité
Désolé, j'ai mal géré la présentation.
//Cas 1:
$txt = "Chaîne issu d'un fichier texte";
$txt = ereg_replace("\n\r", "...", $txt);
$txt = $txt."titi";
echo $txt; // => Résultat sur deux lignes
//Cas 2:
$txt = "Chaîne issu d'un fichier texte";
$txt = trim($txt)."titi";
echo $txt; // => Résultat sur une ligne
//Cas 3:
$txt = "Chaîne issu d'un fichier texte";
$txt = str_replace("\n\r", "...", $txt);
$txt = $txt."titi";
echo $txt; // => Résultat sur deux lignes