regex string nimmt zuviel auf

danza

Erfahrenes Mitglied
Hi,

ich versuche jetzt schon seit längeren diesen Code per Regex und PHP aufzuteilen:

HTML:
<div id="12" style="display:none" border="0"><center><img src='images/zones/elwynn.gif' /></center> <img src="images/map-pin-yellow.gif" style="position: absolute; left: 351.762749054px; top: 227.586337813px;" alt="Abudun" onmouseover="Tip('<div><b>Abudun</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 393.523130345px; top: 227.958754787px;" alt="Evilassasin" onmouseover="Tip('<div><b>Evilassasin</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 280.231672227px; top: 425.491242694px;" alt="Mixery" onmouseover="Tip('<div><b>Mixery</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 296.276972003px; top: 395.458022989px;" alt="Nora" onmouseover="Tip('<div><b>Nora</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 279.718129838px; top: 425.234548508px;" alt="Quickey" onmouseover="Tip('<div><b>Quickey</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 621.183114747px; top: 353.875668986px;" alt="Wisperwind" onmouseover="Tip('<div><b>Wisperwind</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /></div>

mit folgenden Regex:
PHP:
$data = 'siehe oben';
preg_match_all("%<img src=\"images/map-pin-yellow.gif\" style=\"position: absolute; left: ([0-9.]*)px; top: ([0-9.]*)px;\" alt=\"(.*?)\" onmouseover=\"Tip\('<div><b>(.*?)</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left'\)\" onmouseout=\"UnTip\(\)\" />%iUs", $data, $map_userdaten);
print_r($map_userdaten);

Folgende Ausgabe geschieht:
Code:
Array
(
    [0] => Array
        (
            [0] => <img src="images/map-pin-yellow.gif" style="position: absolute; left: 348.796224519px; top: 200.925911381px;" alt="Abudun" onmouseover="Tip('<div><b>Abudun</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 254.386886987px; top: 197.256446959px;" alt="Braunbär" onmouseover="Tip('<div><b>Braunbär</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 408.933830923px; top: 241.271083572px;" alt="Evilassasin" onmouseover="Tip('<div><b>Evilassasin</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 423.135228807px; top: 137.19421565px;" alt="Gloì" onmouseover="Tip('<div><b>Gloì</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 303.655194735px; top: 403.455519703px;" alt="Mixery" onmouseover="Tip('<div><b>Mixery</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 279.576826593px; top: 412.875354691px;" alt="Nora" onmouseover="Tip('<div><b>Nora</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 253.958548345px; top: 367.987537037px;" alt="Palalady" onmouseover="Tip('<div><b>Palalady</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 304.875506428px; top: 406.232866628px;" alt="Quickey" onmouseover="Tip('<div><b>Quickey</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 621.183114747px; top: 353.875668986px;" alt="Wisperwind" onmouseover="Tip('<div><b>Wisperwind</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" />
        )

    [1] => Array
        (
            [0] => 348.796224519
        )

    [2] => Array
        (
            [0] => 200.925911381
        )

    [3] => Array
        (
            [0] => Abudun" onmouseover="Tip('<div><b>Abudun</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 254.386886987px; top: 197.256446959px;" alt="Braunbär" onmouseover="Tip('<div><b>Braunbär</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 408.933830923px; top: 241.271083572px;" alt="Evilassasin" onmouseover="Tip('<div><b>Evilassasin</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 423.135228807px; top: 137.19421565px;" alt="Gloì" onmouseover="Tip('<div><b>Gloì</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 303.655194735px; top: 403.455519703px;" alt="Mixery" onmouseover="Tip('<div><b>Mixery</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 279.576826593px; top: 412.875354691px;" alt="Nora" onmouseover="Tip('<div><b>Nora</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 253.958548345px; top: 367.987537037px;" alt="Palalady" onmouseover="Tip('<div><b>Palalady</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 304.875506428px; top: 406.232866628px;" alt="Quickey" onmouseover="Tip('<div><b>Quickey</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left')" onmouseout="UnTip()" /><img src="images/map-pin-yellow.gif" style="position: absolute; left: 621.183114747px; top: 353.875668986px;" alt="Wisperwind
        )

    [4] => Array
        (
            [0] => Wisperwind
        )

)

Als Ausgabe möchte ich eigentlich das nur die Koordinaten(nur die zahlen!) erhalten:
left: 393.523130345px; top: 227.958754787px

Das eigentliche Problem besteht dadrin, dass die Koordinaten nur einmal gefundne werden eigtl. müssten die doch Mehrfach gefunden werden? Wo steckt da der Fehler?

MFG
danza
 
Code:
%<img src=\"images/map-pin-yellow.gif\" style=\"position: absolute; left: ([0-9.]+)px; top: ([0-9.]+)px;\" alt=\"[^"]*\" onmouseover=\"Tip\('<div><b>[^<]*</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left'\)\" onmouseout=\"UnTip\(\)\" />%iUs
 
mhh Irgendwie sagt mein PHP parser nen Error bei dem Regex:
Code:
Parse error: syntax error, unexpected ']' in /www/htdocs/w0097990/d4nza.de/root.d4nza.de/update.php on line 52
 
Dann schau dir mal die Stelle, an der die Zeichenkette vorzeitig beendet wird, genauer an.
 
Hi,

Hab notepad++ nur da sieht man das nicht richtig da der das als String hervorhebt.

sieht man nur bei genauem Hinsehen. Beim alt-Attribut ist ein Anführungszeichen nicht maskiert.

PHP:
$pattern = "%<img src=\"images/map-pin-yellow.gif\" style=\"position: absolute; left: ([0-9.]+)px; top: ([0-9.]+)px;\" alt=\"[^\"]*\" onmouseover=\"Tip\('<div><b>[^<]*</b></div>',BGCOLOR,'#000',BORDERSTYLE,'solid',BORDERCOLOR,'#F0D070',FONTCOLOR,'#d4d4d4',FONTSIZE,'11px',JUMPHORZ,true,JUMPVERT,true,PADDING,15,TEXTALIGN,'left'\)\" onmouseout=\"UnTip\(\)\" />%iUs";

LG
 
Oh man bin ich blöd das hätte ich auch selber sehen können ich hatter erst das " gelöscht dabei musste das escapet werden -.-
Aber danke nochmal ihr zwei ;)
 
Zurück