[PHP] récupérer une chaine jusqu'au un espace

Fermé
almaje - 25 sept. 2012 à 18:23
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 - 26 sept. 2012 à 19:19
Bonjour,

Je sais que c'est pas très clair sur le titre, ce que je veux faire c'est récupérer une chaine de caractères depuis un fichier et de s'arrêter jusqu'à prochain espace. Je voudrai récuperer une chaine qui commence par un caractère (exemple : ?) et cette chaine doit s'arreter dans le prochain espace.

<?php

$fichier="test.txt";

//ouverture en lecture et modification
$text=fopen($fichier,'r') or die("Fichier manquant");
$contenu=file_get_contents($fichier);
echo $contenu;
$a ="?";
$v = strstr($contenu,$a);
$nb = strlen($v);

$contenuMod=str_replace($a, $v, $contenu);
fclose($text);

//ouverture en écriture
$text2=fopen($fichier,'w+') or die("Fichier manquant");
fwrite($text2,$contenuMod);
fclose($text2);

?> 


Sur ce code ça me récupère toutes les caractères qui sont après le '?'

5 réponses

$chainefinal = explode ( ' ', $tachaine);
echo $chainefinal[0];

$chainefinal[0] contient les caractères jusqu'au premier espace
2
Merci ça marche mais pas comme je souhaite, ça me prend ma premiere sous chaine mais je veux commencer par le 2e caractere parce que le premier c'est toujours un '?' chez moi, alors je veux prendre par exemple seulement 'test' et pas '?test'
0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 26/09/2012 à 12:11
preg_match_all( "/\?([^\s]*?)[\s]/" , $text, $matches );
print_r($matches);
1
Merci ça marche mais pas comme je souhaite, ça me prend ma premiere sous chaine mais je veux commencer par le 2e caractere parce que le premier c'est toujours un '?' chez moi, alors je veux prendre par exemple seulement 'test' et pas '?test'


<?php

$fichier="test.txt";

//ouverture en lecture et modification
$text=fopen($fichier,'r') or die("Fichier manquant");
// la variable contenu reçoit tout le texte du document
$contenu=file_get_contents($fichier);
echo $contenu;
// chercher la variable a
$a = '?';
// retourne la chaine après la chaine cherchée
$v = strstr($contenu,$a);
// retourne un tableau de chaînes, chacune d'elle étant une sous-chaîne de la variable contenu extraite en utilisant le séparateur delimiter espace 
$v = explode( ' ', $v);
// Afficher premiere chaire
// echo $v[0]; 
// permet de chercher une sous chaine et de la remplacer. Dans notre cas on chaine la sous chaine $a et on la remplace par la sous chaine $v dans la chaine $contenu
$contenuMod=str_replace($v[0], '<input type="text" id=' . $v[0] . '>', $contenu);
echo $contenuMod;
fclose($text);

//ouverture en écriture
$text2=fopen($fichier,'w+') or die("Fichier manquant");
fwrite($text2,$contenuMod);
fclose($text2);

?> 
0
Luxerails Messages postés 159 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 24 décembre 2012 41
Modifié par Luxerails le 26/09/2012 à 12:08
$v = '?text';  
$v = substr($v, 1); // On récupère tout ce qu'il y a après le premier caractère : "text" 
0
Merci les gars, j'essaie maintenant de boucler pour passer tout le fichier en seul fois sans s'arreter à chaque fois mais ça marche pas
0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
26 sept. 2012 à 19:19
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'aimerai boucler sur le changement du caractère '?' en le <input type ... pour parcourir tout le fichier, je seche sur ce point

$fichier="test.txt";

//ouverture en lecture et modification
$text=fopen($fichier,'r') or die("Fichier manquant");
// la variable contenu reçoit tout le texte du document
$contenu=file_get_contents($fichier);
echo $contenu;
// chercher la variable a
$a = '?';
// retourne la chaine après la chaine cherchée
//while (!feof($text))
//{
$v = strstr($contenu,$a);
// retourne un tableau de chaînes, chacune d'elle étant une sous-chaîne de la variable contenu extraite en utilisant le séparateur delimiter espace 
$v = explode( ' ', $v);
// Supprimer le caractere '?' 
$remplace=str_replace('?', '', $v[0]);
// Afficher premiere chaire
// echo $v[0]; 
// permet de chercher une sous chaine et de la remplacer. Dans notre cas on chaine la sous chaine $a et on la remplace par la sous chaine $v dans la chaine $contenu
$contenuMod=str_replace($v[0], '<input type="text" id="' . $remplace . '">', $contenu);
// echo $contenuMod;
//}
fclose($text);

0