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

[Fermé]
Signaler
-
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
-
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 '?'

A voir également:

5 réponses

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

$chainefinal[0] contient les caractères jusqu'au premier espace
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

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'
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
preg_match_all( "/\?([^\s]*?)[\s]/" , $text, $matches );
print_r($matches);
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);

?> 
Messages postés
159
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
24 décembre 2012
41
$v = '?text';  
$v = substr($v, 1); // On récupère tout ce qu'il y a après le premier caractère : "text" 
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
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
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);