[RESOLU] chaine de caracteres, extraire juste une ligne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] chaine de caracteres, extraire juste une ligne

Re: [RESOLU] chaine de caracteres, extraire juste une ligne

par Saian » 06 mai 2015, 17:33

Mais non ça n'a rien de compliqué. ;)
$data = '
presentation blablablabla
voiture : ferrari turbo
puissance : 34 cv
poids : 1200 kg
commentaire : elle est chère'; 

$data = substr($data, strpos($data, 'voiture :'));
echo $data = substr($data, 0, strpos($data, "\n"));

Re: chaine de caracteres, extraire juste une ligne

par jeromedusud » 06 mai 2015, 17:28

bon j'ai fait des tas d'essais, ca ne marche pas, il me détecte que la 1ere ligne

echo substr(strpbrk($data, 'voiture :'), 0, strpos(strpbrk($data, 'voiture :'), "\n"));

si je change ce chiffre, ca me décale les caractères, donc vers 26 j'ai la bonne ligne,
mais si un message est différent, ca déplace les caractères

tanpis, merci pour l'aide, je laisse tomber, trop compliqué :?

Re: chaine de caracteres, extraire juste une ligne

par jeromedusud » 06 mai 2015, 15:58

Bonjour Saian et merci pour ton aide aussi !
je vais tester ton code,
ce qui est embetant, c'est que la chaine en question, c'est le forum phpbb3 qui la fait, via un post dans le forum, je récupère le message.
Donc dans mysql, il y a des espaces, je ne sais pas comment le système fait pour reconnaitre les espaces et les sauts de ligne,
la commande

Code : Tout sélectionner

$details3 = nl2br($details2);
y arrive bien pourtant...
bon j'essaye et je vous tiens au courant :wink:

Re: chaine de caracteres, extraire juste une ligne

par Saian » 06 mai 2015, 15:45

La particularité du retour à la ligne est qu'il peut avoir plusieurs façon d'être encodé : \n, \r, \r\n

En reprenant ton premier code ça donnerait :
echo substr(strpbrk($data, 'voiture :'), 0, strpos(strpbrk($data, 'voiture :'), "\n"));
Testes les différents types de retour à la ligne jusqu'à obtenir celui qui fonctionne.

A noter les " sont important, si tu mets '\n' le \n ne sera pas interprété comme un retour à la ligne.

PS l'idée de xTG est bonne aussi. Après ton strpbrk tu explode sur le retour à la ligne et tu prends la première ligne. Faut juste trouver le bon retour à la ligne.

Re: chaine de caracteres, extraire juste une ligne

par jeromedusud » 05 mai 2015, 18:51

merci mais cela ne fonctionne pas

je récapitule : j'affiche ca :
NOM DU JEU : PROJECT CARS
VOLANT / MANETTE / CLAVIER : volant G27
AIDE A LA CONDUITE (OUI/NON) : non
si je fais echo $pieces[0]; il m'affiche PROJECT


et je souhaite :
NOM DU JEU : PROJECT CARS

si je fais echo $pieces[4]; il m'affiche PROJECT
si je fais echo $pieces[5]; il m'affiche CARS

sachant que j'ai des noms parfois simple, parfois composés, je ne sais pas combien c'est aléatoire
donc il me faut bien le saut de ligne, pas une detection d'espace ^^

c'est compliqué ^^

Re: chaine de caracteres, extraire juste une ligne

par tof73 » 05 mai 2015, 18:01

echo $pieces[0];

Re: chaine de caracteres, extraire juste une ligne

par jeromedusud » 05 mai 2015, 17:48

salut xTG

je récapitule : j'affiche ca :
NOM DU JEU : PROJECT CARS
VOLANT / MANETTE / CLAVIER : volant G27
AIDE A LA CONDUITE (OUI/NON) : non
FREIN ABS (OUI/NON) : non
CONTRÔLE MOTRICITÉ (OUI/NON) : non


et je voudrais ca :
NOM DU JEU : PROJECT CARS

voila mon bout de code :

Code : Tout sélectionner

$details = $data2['post_text']; $details2 = utf8_encode($details); $details3 = nl2br($details2); $adresse = $details3; $arobase = "NOM DU JEU :"; $total = strstr($adresse,$arobase) . "<br />";
qui permet d'écrire le message avec les bons sauts de ligne et/ou les espaces,
donc j'ai utilisé explode :

Code : Tout sélectionner

$details = $data2['post_text']; $details2 = utf8_encode($details); $details3 = nl2br($details2); $adresse = $details3; $arobase = "NOM DU JEU :"; $total = strstr($adresse,$arobase) . "<br />"; $pieces = explode(" ", $total); echo $pieces;
il me mets : Array

?? merci pour l'aide :D

Re: chaine de caracteres, extraire juste une ligne

par xTG » 05 mai 2015, 14:18

Tu peux conserver ce code et rajouter explode sur le caractère de retour à la ligne.
Tu obtiendras un tableau de ligne, tu t'intéresses à la première. ;)

chaine de caracteres, extraire juste une ligne

par jeromedusud » 05 mai 2015, 13:37

bonjour ici !

j'ai installé un forum phpbb3 et je joue avec le code.
je souhaite extraire des lignes depuis un message du forum, j'ai donc fait une requete qui me donne par exemple :

Code : Tout sélectionner

$data =" presentation blablablabla voiture : ferrari turbo puissance : 34 cv poids : 1200 kg commentaire : elle est chère";
(je détaille pas, mais j'ai trouvé comment retrouver les sauts de lignes comme dans le message sur forum)

j'aimerai extraire uniquement : voiture : ferrari turbo
or je fais :

Code : Tout sélectionner

echo strpbrk($data, 'voiture :');
il ne va pas s'arrêter, il va me copier tout le texte qui suivra :
voiture : ferrari turbo
puissance : 34 cv
poids : 1200 kg
commentaire : elle est chère


comment lui dire de ne copier que jusqu'au saut de ligne

par avance, merci