php preg masque

WRInaute occasionnel
Bonjour à tous

je tente désepèrement de créer un masque qui me permettrait de trouver dans une chaine de la forme suivante : nom='contenu'
que se soit avec de simples quotes, des guillemets ou aucun des deux

j'ai déjà quelque chose mais cela ne fonctionne pas, quelqu'un peut m'aider siouplé :p

Code:
$masque = "/([^ ][\w]+)=(?(')|(\"))(.*?)((?(2)(')|(\"))+)/e";

([^ ][\w]+) => un premier mot n'ayant pas d'espaces
(?(')|(\"))(.*?)((?(2)(')|(\"))+) => l'ensemble du contenu entre des guillemets

enfin voilà quoi je vraiment besoin d'aide sniff :)p)
 
Nouveau WRInaute
Sans regarder le truc à fond, déjà le début ne semble pas bon :
Code:
[^ ]
ça doit vouloir dire "une ligne qui commence par un espace" et puis pourquoi toutes ces accolades ? d'autant plus que le "+" veut dire "1 ou plus" donc pas "un mot".

Bref, un petit coup de Google s'imposerait pour chercher par exemple un "tutoriel expressions régulières" !
 
WRInaute occasionnel
Code:
([^ ][\w]+)

Il me semble que cela signifie : un seul mot ne contenant pas d'espaces, non?
 
WRInaute discret
J'ai fait une petite fonction y a pas longtemps pour un cas un peu similaire.
La voilà :
Code:
function make_arg($str){
	preg_match_all('/\s*(.*?)\s*=\s*\"(.*?)\"/', $str, $attribs, PREG_SET_ORDER);
	foreach($attribs AS $val){
	        $arg[$val[1]] = $val[2];
	}
	return $arg;
}

$str est la chaîne contenant nom="contenu", la fonction retourne un tableau où $tab['nom'] contiendra "contenu".
 
Discussions similaires
Haut