[RESOLU] Rechercher un texte entre deux double cote

Eléphanteau du PHP | 20 Messages

28 mai 2013, 15:35

Bonjour

Je recherche le moyen de récupérer le contenu qui ce trouve entre deux double " " et le mettre dans une variable. Bien sur le nombre de caractère de ce contenu peut changer.

file="toto...78454--titi__zzzzzz tyz------458845545.xlm"

J'ai pense a stripos

voici une partie de mon code

// recherche le nom
$name1 = stripos($corp1, $find1);
if ($name1 !== false)
{
}
$name2 = stripos($corp1, $find2);
if ($name2 !== false)
{
}
$name_tmp= $name1 - $name2;
$name = $name_tmp + 26;

Mais ce code n'est pas bon car il compte le nombre de caractère.

Quelqu'un a une idée ?

SEB

Mammouth du PHP | 619 Messages

28 mai 2013, 15:38

BOnjour,

si tu as pas d'autre double " " tu peu voir pour un explode
$mavar=explode('"','Bonjour je veux "recupere ce text" avec un explode');
echo $mavar[1];
ou tu peu aussi faire une regex

Eléphant du PHP | 56 Messages

28 mai 2013, 15:53

dans ce genre la.
<?php
$content ='chaine ou se trouvent les quotes a "extraire", a modifier au besoin.';
$content = preg_match('#"(.+)"#isU',$content,$matches);
echo $matches[0].'<br />';
?>

Eléphanteau du PHP | 20 Messages

28 mai 2013, 16:36

merci beaucoup pour toutes ces réponses, mais c'est pas tout a fait ça.

En faite dans le fichier fichier il faut rechercher file="et recuperer ce qui a entre les doubles cotes et le mettre dans une variable"

Seb

Mammouth du PHP | 619 Messages

28 mai 2013, 16:44

Re,
utilise la regex de J-oxi
<?php
$content ='chaine ou se trouvent les quotes a "extraire", a modifier au besoin.';
if(preg_match('#file="(.+)"#isU',$content,$matches)){
echo $matches[1].'<br />';
}
else{
echo 'Aucun';
}
?>
Modifié en dernier par ghost5922 le 28 mai 2013, 16:58, modifié 1 fois.

Eléphanteau du PHP | 20 Messages

28 mai 2013, 16:53

ça marche pas :cry:

il affiche Array

Mammouth du PHP | 619 Messages

28 mai 2013, 16:56

Ok

fait un print_r() et affiche le resultat
<?php
$content ='chaine ou se trouvent les quotes a "extraire", a modifier au besoin.';
if(preg_match('#file="(.+)"#isU',$content,$matches)){
print_r($matches);
}
else{
echo 'Aucun';
}
?>
normalement tu vas avoir quelque chose comme

Array ( [0] => file="extraire" [1] => extraire )

donc $matches[1] contient bien la valeur

Eléphanteau du PHP | 20 Messages

28 mai 2013, 17:11

ça marche pas. Je pense qu'il manque quelque chose.

Peut etre ça. le contenu de mon fichier est dans une variable $boby

$content ='file=" "';
if(preg_match('#file="(.+)"#isU',$body2,$content,$matches)){
print_r($matches);
}
else{
echo 'Aucun';
}

mais ça marche pas non plus

Mammouth du PHP | 619 Messages

28 mai 2013, 17:14

A non il a erreur pour toi $content vaut $boby
<?php
//on recherche file="" dans la variable $boby si on trouve un résultat on le sort dans un tableau $matches
if(preg_match('#file="(.+)"#isU',$boby,$matches)){
echo $matches[1].'<br />';
}
else{
echo 'Aucun';
}
?>

Mammouth du PHP | 619 Messages

28 mai 2013, 17:18

A oui si tu as plusieurs resultat ( plusieurs file="" dans un meme fichier ) il faut utiliser
<?php
//on recherche file="" dans la variable $boby si on trouve un résultat on le sort dans un tableau $matches
if(preg_match_all('#file="(.+)"#isU',$boby,$matches)){
 foreach($matches as $f){
     echo $f[1].'<br />';
  }

}
else{
echo 'Aucun';
}
?>

Eléphanteau du PHP | 20 Messages

28 mai 2013, 17:25

OK mais j'ai toujours Array
pas le contenu des " " :cry:

Mammouth du PHP | 619 Messages

28 mai 2013, 17:27

cela donne quoi ?
<?php
//on recherche file="" dans la variable $boby si on trouve un résultat on le sort dans un tableau $matches
if(preg_match('#file="(.+)"#isU',$boby,$matches)){
print_r($matches);
}
else{
echo 'Aucun';
}
?>
Modifié en dernier par ghost5922 le 28 mai 2013, 17:29, modifié 1 fois.

Eléphant du PHP | 56 Messages

28 mai 2013, 17:28

Tu pourrais nous montré le contenu de la variable dans la quelle tu recherche les doubles quotes.. c'est quoi ça vient d'ou? ...

Eléphanteau du PHP | 20 Messages

28 mai 2013, 17:36

il me repond toujours la meme chose que $matches correspond a Array
par contre dans les logs php il me dit que ma variable n'est pas définit ?? Undefined variable: boby

Comprend pas elle est bien définit ma variable body puisque je l'utilise aussi pour couper les 3 dernières lignes

Mammouth du PHP | 619 Messages

28 mai 2013, 17:38

Comme le demande J-oxi peu tu mettre le contenu de $boby et ton code on pourra mieux comprendre