PHP preg_metch_all

Split1989

hh-student.de
ID: 238425
L
9 April 2007
1.223
85
Hallo,

habe ein kleines problem mit dem regulären ausdruck...

habe eine string der so in etwa aussieht
Code:
<td><a href="https://link.de?id=XYZ">NAME</a></td>
<td class="zahl1">73,31</td>
<td class="zahl2">0.24%</td>
<td><a href="https://link.de?id=XYZ">NAME2</a></td>
<td class="zahl1">13,37</td>
<td class="zahl2">0.42%</td>

ich möchte am ende gerne ein Array haben was so in etwa aussieht [[Name,0.24],[NAME2|0.42]]

hab erstmal versucht nur (Name,name2...) auszulesen ... leider wird mir jedoch nur der erste treffer geworfen.

PHP:
$pattern = '@">(.*)</a>@';
$name = preg_match($pattern, $data, $subpattern);

kann mir evtl jmd auf die sprünge helfen?
 
Du hast Dir die Antwort doch schon selbst im Titel des Threads gegeben. :think:

preg_match_all() und ein nicht gieriger Quantor innerhalb der Capture Group (.*? statt .*) sollten Dein Problem lösen.
 
^^ oh man das ist echt doof...

PHP:
$string= str_replace('</a>', "", $string);

$rega = '@">(.*)</@';
$pos = preg_match_all($rega, $string, $poss);  
 
$data= array();
$result = floor(count($poss[1])/3);

$i = 0;
while($i < $result)
{
  array_push($data,array($poss[1][$i*3],$poss[1][$i*3+2]));
  $i++;
}


so sieht jezt mein skript aus ... ich denke es geht auch einfacher und besser... evtl hat ja jmd einen vorschlag wie sich das optimieren lässt



(.*? statt .*) habe ich nicht gemacht da der name auch aus 2 teilen bestehen kann
 
Zuletzt bearbeitet:
Ob das Optimieren is, weiß ich nicht, aber ich würde den RegExp komplexer - und logischer - machen.
Mein Ansatz wäre, dass du schon vom RegExp dir deine 3 (verwendest wohl nur 2) Daten, die zusammengehören, zusammengehörig liefern lässt.

Im Moment hast du ja nur ein teures strip_tags() gebaut.