2010-12-14 9 views
0

Ich versuche src Attribute aus zu extrahieren: [attname src = "http://example.org"] somecontent [attname src = "http://www.example.com"Regulärer Ausdruck - Trennzeichenproblem in PHP

]

Was ich habe jetzt:
preg_match_all('#attname src=".*[^"]#', $buffer, $bufferarr);

aber es funktioniert nicht - es gibt keinen Stopp nach der zweiten ", was zur Folge hat: attname src="http://example.org"] somecontent [attname src="http://www.example.com

Antwort

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

Danke, es hat sehr gut funktioniert. – Paul

0

nicht die beste Lösung, aber irgendwie es Mach's erledigt:

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

standardmäßig + und * sind „gierig“ - sie verschlingen so viele Zeichen wie sie können. Deshalb bekommst du mehr als du willst. Wenn Sie ihnen ? hinzufügen (+? und *?) werden sie nicht gierig sein und werden so schnell wie möglich aufhören.

Sie Regexp sieht auch falsch aus. Es sollte etwas wie #attname src="[^"]*?"# sein.

+0

Nützlich - danke! – Paul