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

almaje -  
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   -
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

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

$chainefinal[0] contient les caractères jusqu'au premier espace
2
almaje
 
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 698 Date d'inscription   Statut Membre Dernière intervention   80
 
preg_match_all( "/\?([^\s]*?)[\s]/" , $text, $matches );
print_r($matches);
1
almaje
 
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   Statut Membre Dernière intervention   41
 
$v = '?text';  
$v = substr($v, 1); // On récupère tout ce qu'il y a après le premier caractère : "text" 
0
almaje
 
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 698 Date d'inscription   Statut Membre Dernière intervention   80
 
0

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

Posez votre question
almaje
 
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