rechercher et extraitre une chaine dans un texte

jeanmed
Invité n'ayant pas de compte PHPfrance

30 avr. 2007, 12:07

Bonjour,

Je voudrais extraire d'une chaine une partie exemple :

<div class="volet">Volet : rouge</div>

je voudrais avoir : $volet="volet";
et $coul="rouge";

Si vous avez une idée merci de votre aide

Mammouth du PHP | 991 Messages

30 avr. 2007, 12:35

regarde la fonction preg_replace()
DevOps, Symfony4, Hoa

Mammouth du PHP | 804 Messages

30 avr. 2007, 19:26

salut

essai explode

$chaine="Volet:rouge";
$tab= explode(":",$chaine);

$volet=$tab['0'];
$coul=$tab['1'];

si c'est en sortie de requete tu devrais pouvoir y arriver comme ca

à savoir ton tableau commence toujours à 0 ,mais il existe une manipe pour le mettre à 1

++
Modifié en dernier par dogmongo le 30 avr. 2007, 20:35, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

30 avr. 2007, 19:56

regarde les expressions réguliaires et notamment preg_match()

Exemple:
si je veux récupérer une simple adresse d'un href :
<?php 
//soit le texte de recherche suivant:
$texte = "<a href='adresse'>ceci est un lien</a>";

//si je veux récupérer l'adresse dans href j'écrirai l'expression suivante: href='(.*)'
//où (.*) veut dire: 0~N caractères 
//et les prenthèses désignent un élément à retourner dans la réponse de preg_match
preg_match("#href='(.*)'#", $texte, $reponse);

//pour voir la réponse de l'expression, consulter le tableau $reponse retourné par preg_match:
print_r($reponse);
//en fait, la valeur recherchée doit se trouver à partir de la 2° case du tableau $reponse
?>
Et si je veux préciser dans qu'il s'agit bien d'un href d'un lien hypertexte :
<?php 
...
preg_match("#<a.*href='(.*)'.*>.*</a>#", $texte, $reponse);
...
?>
Et si je souhaite récupérer le texte du lien, en même temps que l'adresse:
<?php 
...
//2 parenthèses = 2 réponses
preg_match("#<a.*href='(.*)'.*>(.*)</a>#", $texte, $reponse);
...
?>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène