preg_match gibt zu wenig aus

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Jungbluth

Mitglied
Hallo,
ich möchte ein mir regex auf ein div mit einer bestimmten prüfen und dann den div Container mit seinem gesamten Inhalt ausgeben.

Was bei online Regextestern mit
Code:
<div id="tt48472".+((<\/)div(>))
auch ganz gut funktioniert liefert in php mit preg_match jedoch nur Start und Endtag.
Woran kann das liegen?
 

basti1012

Erfahrenes Mitglied
Ich verstehe nur Bahnhof und dein Code macht es auch nicht besser.
Ich weiß nicht, ob die anderen das checken, doch ich brauche mehr Input und Code vielleicht auch noch dazu.
 

Jungbluth

Mitglied
Das ist der code:
PHP:
$data file_get_contents("https://db.rising-gods.de/?item=48472");
$matches = [];
preg_match("/<div id=\"tt48472\".+((<\/)div(>))/",$data,$matches);
var_dump($matches);
Das kommt raus:
PHP:
array(4) {
  [0]=>
  string(86) "<div id="tt48472" class="wowhead-tooltip" style="float: left; padding-top: 1px"></div>"
  [1]=>
  string(6) "</div>"
  [2]=>
  string(2) "</"
  [3]=>
  string(1) ">"
}
das sollte laut regex tester rauskommen (was ich auch haben will):
PHP:
<div id="tt48472" class="wowhead-tooltip tooltip-slider" style="float: left; padding-top: 1px; width: 320px; visibility: visible;"><table><tbody><tr><td><table style="white-space: nowrap; width: 100%;"><tbody><tr><td><b class="q4">Thassarians Helm der Eroberung</b><br><!--bo-->Wird beim Aufheben gebunden<table width="100%"><tbody><tr><td>Kopf</td><th><!--asc4-->Platte</th></tr></tbody></table><span><!--amr-->1925 Rüstung</span><br><span><!--stat4-->+113 Stärke</span><br><span><!--stat7-->+137 Ausdauer</span><br><!--e--><a href="?items=3&amp;filter=cr=81;crs=1;crv=0" class="socket-meta q0">Metasockel</a><br><a href="?items=3&amp;filter=cr=81;crs=3;crv=0" class="socket-yellow q0">Gelber Sockel</a><br><!--ps--><span class="q0">Sockelbonus: <a href="?enchantment=3312">+8 Stärke</a></span><br>Haltbarkeit 100 / 100<br>Klassen: <a href="?class=6" class="c6">Todesritter</a><br>Benötigt Stufe 80<br>Gegenstandsstufe 232<br></td></tr></tbody></table><table style="width: 100%;"><tbody><tr><td><span class="q2">Anlegen: Erhöht Eure kritische Trefferwertung um <!--rtg32-->72&nbsp;<small>(<a href="javascript:;" onmousedown="return false" class="tip" style="color: white; cursor: pointer" onclick="$WH.g_staticTooltipLevelClick(this, null, 0)" onmouseover="$WH.Tooltip.showAtCursor(event, '<span class=\'q2\'>' + LANG.tooltip_changelevel + '</span>')" onmousemove="$WH.Tooltip.cursorUpdate(event)" onmouseout="$WH.Tooltip.hide()"><!--lvl--><!--rtg%32-->1.57%&nbsp;@&nbsp;L<!--lvl-->80</a>)</small>.</span><br><span class="q2">Anlegen: Erhöht Waffenkundewertung um <!--rtg37-->64&nbsp;<small>(<a href="javascript:;" onmousedown="return false" class="tip" style="color: white; cursor: pointer" onclick="$WH.g_staticTooltipLevelClick(this, null, 0)" onmouseover="$WH.Tooltip.showAtCursor(event, '<span class=\'q2\'>' + LANG.tooltip_changelevel + '</span>')" onmousemove="$WH.Tooltip.cursorUpdate(event)" onmouseout="$WH.Tooltip.hide()"><!--lvl--><!--rtg%37-->7.81&nbsp;@&nbsp;L<!--lvl-->80</a>)</small>.</span><br><br><span class="q"><a href="?itemset=871" class="q">Thassarians Schlachtrüstung</a> (0/5)</span><div class="q0 indent"><span><!--si48488:48887:48472:48483--><a href="?item=48472">Thassarians Helm der Eroberung</a></span><br><span><!--si48490:48885:48474:48481--><a href="?item=48474">Thassarians Kampfplatte der Eroberung</a></span><br><span><!--si48484:48487:48888:48476--><a href="?item=48476">Thassarians Beinplatten der Eroberung</a></span><br><span><!--si48486:48889:48478:48485--><a href="?item=48478">Thassarians Schulterplatten der Eroberung</a></span><br><span><!--si48482:48489:48886:48480--><a href="?item=48480">Thassarians Stulpen der Eroberung</a></span></div><br><span class="q0"><span>(2) Set: <a href="?spell=67115">Eure Fähigkeiten 'Blutstoß' und 'Herzstoß' haben eine Chance, Eure Stärke 15 Sek. lang um 180 zu erhöhen.</a></span><br><span>(4) Set: <a href="?spell=67118">Der Schaden Eurer Blutseuche hat nun eine Chance, kritische Treffer zu erzielen.</a></span></span></td></tr></tbody></table><!--?48472:1:80:80--></td><th style="background-position: top right"></th></tr><tr><th style="background-position: bottom left"></th><th style="background-position: bottom right"></th></tr></tbody></table></div>
 

basti1012

Erfahrenes Mitglied
Ich bin kein PHP Profi, denke aber das in deinem Fall der Domparser auch gut laufen würde.

Wenn ich das aber richtig sehe, wird der Inhalt von ID tt48472 mit Javascript nachgeladen.
Da solltest du mit PHP (egal ob file(),file_get_contents() oder domparser() ) nicht dran kommen.

Wie gesagt ich bin auch noch PHP Anfänger, kann sein das ich mich auch irre.
Falls es mit PHP so nicht geht, gibt es auch noch andere Tricks.
Aber erst mal abwarten was die Profis sagen, ob und wie weit ich falsch liege.
 

basti1012

Erfahrenes Mitglied
jedoch nur Start und Endtag.
Ich denke das liegt daran, dass der Inhalt mit Javascript geholt wird,bzw. erstellt wird.
Schau mal in Quelltext , dann siehst du das dies Element Leer ist und nur
Code:
<div id="tt48472"></div>
Das da steht.
Mit PHP wird das nichts, zumindest wüsste ich nicht wie
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…