2010-12-14 53 views
0

J'essaie d'extraire les attributs src de: [attname src = "http://example.org"] somecontent [attname src = "http://www.example.com" ]Expression régulière - problème de délimitation dans PHP

ce que j'ai maintenant:
preg_match_all('#attname src=".*[^"]#', $buffer, $bufferarr);

Cependant, il ne fonctionne pas - il n'y a pas d'arrêt après la deuxième ", ce qui se traduit par: attname src="http://example.org"] somecontent [attname src="http://www.example.com

Répondre

1
preg_match_all('#attname src="([^"]*)"#', $buffer, $bufferarr); 
+0

Merci, cela a très bien fonctionné. – Paul

0

pas la meilleure solution, mais de toute façon il faire le travail:

$str = '[attname src="http://example.org"] somecontent [attname src="http://www.example.com"]'; 
preg_match_all('/attname src=\"(.*?)\"/', $str, $match); 
var_dump($match); 
2

Par défaut, + et * sont « avides » - ils avalent autant de caractères que possible. C'est pourquoi vous obtenez plus que ce que vous voulez. Si vous ajoutez ? à eux (+? et *?) ils seront non gourmands et s'arrêteront dès qu'ils le peuvent.

Vous avez également l'air faux. Cela devrait être quelque chose comme #attname src="[^"]*?"#.

+0

Utile - merci! – Paul