Hamburger SV TicketCrawler

Moin,

also das Script ist nun fertig und es funktioniert! VIELEN DANK BAYARO!!!

Ich habe eine Instanz angelegt (HSV Tickets) unter der ich dann das Script erstellt habe. Durch das Script wird dann alles andere automatisch angelegt. Intervall für Aktualisierung und die zu durchsuchenden Ränge können individuell angepasst werden. Ich habe es noch etwas angepasst, da die HTML Box ursprünglich unter dem Script angelgt wurde. Ich finde es immer besser, wenn es auf der gleichen Ebene ist, da es sonst im WebFront doof aussieht. Die Tabelle ist natürlich nun im originalen HSV Blau (RAL 5002).
Screenshot

  <?
/*********** HSV-Tickets auslesen **************/
/*   Script v1.0 by Bayaro
/*	  Script v1.0.1 by lahlor :)
/*
/*  https://www.symcon.de/forum/threads/30551-Hamburger-SV-TicketCrawler
/*
/*  Skript 1x ausführen und Variable + Timer werden automatisch erstellt.
/*  Die HTMLBox Variable dann einfach in euer WebFront verlinken.
/*
/*** KONFIGURATION *************************************************************/
$AktualisierungsIntervall = 15; // Tabelle wird alle X Minuten aktualisiert
$TabelleMitFarben = true; // Farbige Ausgabe der Ticket-Tabelle

//Array zum Definieren für welche Plätze die Tickets herausgefiltert werden sollen
$Platzwahl_AR[] = "22A";
$Platzwahl_AR[] = "23A";
$Platzwahl_AR[] = "24A";
$Platzwahl_AR[] = "25A";
$Platzwahl_AR[] = "26A";
$Platzwahl_AR[] = "27A";
/*******************************************************************************/


// Skript-Ausführungszeit erhöhen (je nachdem wie schnell die HSV Seite ist notwendig oder nicht)
ini_set("max_execution_time", 60);

// Timer setzen
IPS_SetScriptTimer($_IPS['SELF'], $AktualisierungsIntervall * 60);


// Spielbegegnungen - Ticket URLs ermitteln
$xpath1 = Webseite_DOM("https://ticketing.hsv.de/ticketboerse/default.php");
$content1 = $xpath1->query('.//td[@align="center"]/a/@href');
$i = 0;
foreach ($content1 as $entry01) {
      $HSV_Ticket_AR[$i]["URL"] = $entry01->nodeValue;
   $i++;
}

// Spielgegner ermitteln
$content2 = $xpath1->query('.//td[@align="left"]/span');
$i = 0;
foreach ($content2 as $entry02) {
      $HSV_Ticket_AR[$i]["Gegner"] = $entry02->nodeValue;
   $i++;
}

//Ticket URLs zu gewünschten Blöcken ermitteln
$x = 0;
for ($s=0; $s<count($HSV_Ticket_AR); $s++)
{
   $xpathSpieltag = Webseite_DOM($HSV_Ticket_AR[$s]["URL"]);
   $content = $xpathSpieltag->query('.//table[@id="spielserie"]/tbody/tr/td[1]');
    foreach ($content as $entry) {
          $Block = trim($entry->nodeValue);
          if (array_search($Block, $Platzwahl_AR) !== false)
          {
             $contentBlockauswahl = $xpathSpieltag->query('.//table[@id="spielserie"]/tbody/tr/td[2]/a/@href');
             foreach ($contentBlockauswahl as $entryX)
            {
                $BlockauswahlURL = $entryX->nodeValue;
                preg_match("|(block=$Block)|", $BlockauswahlURL, $BlockMatch);
                if (@array_key_exists("1", $BlockMatch) === true)
                {
               $HSV_Ticket_AR[$s]["TicketURLs"][$x]["Block"] = $Block;

                    $HSV_Ticket_AR[$s]["TicketURLs"][$x]["URL"] = $entryX->nodeValue;
                    $xpathBlock = Webseite_DOM($BlockauswahlURL);

                    //Anzahl verfügbarer Tickets ermitteln
                    $contentPlaetze = $xpathBlock->query('.//table[@id="spielserie"]/tbody/tr/td[1]');
                    $Platzcount = 0;
                    foreach ($contentPlaetze as $entryPlaetze)
                    {
                        $Platzcount++;
                    }
                    $HSV_Ticket_AR[$s]["TicketURLs"][$x]["AnzahlTickets"] = $Platzcount;

                    //Preise verfügbarer Tickets ermitteln
                    $contentPreise = $xpathBlock->query('.//table[@id="spielserie"]/tbody/tr/td[4]');
                    foreach ($contentPreise as $entryPreis)
                    {
                        $HSV_Ticket_AR[$s]["TicketURLs"][$x]["Preis"] = $entryPreis->nodeValue;
                    }

                    $x++;
                }
              }
          }
    }
}
//print_r($HSV_Ticket_AR);


// HTML CSS Style definieren (Tabelle, Schrift, Farben, ...)
if ($TabelleMitFarben == false) {
$HTML_CSS_Style = '';
}
else {
$HTML_CSS_Style = '<style type="text/css">
a:link {color:white; text-decoration:none}
a:visited {color:white; text-decoration:none}
a:active {color:white; text-decoration:none}
a:hover {color:blue; text-decoration:none}
.bt {border-collapse;border-spacing:0;}
.bt td {font-family:Arial, sans-serif;font-size:14px;padding:1px 10px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.bt th {font-family:Arial, sans-serif;font-size:14px;font-weigth:normal;padding:1px 10px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.bt .tb-match{font-size:12px;background-color:#000000;color:#FFFFFF;text-align:center}
.bt .tb-tickets{font-size:12px;background-color:#162E7B;color:#FFFFFF;text-align:center}
</style>';
}


// HTML Ausgabe generieren
$HTML = '<html>'.$HTML_CSS_Style;
$HTML .= '<center><table class="bt">';

for ($h=0; $h<count($HSV_Ticket_AR); $h++) {
   $HTML .= '<tr><th class="tb-match">Hamburger SV</th><th class="tb-match">vs.</th><th class="tb-match">'.$HSV_Ticket_AR[$h]["Gegner"].'</th></tr>';
   foreach ($HSV_Ticket_AR[$h]["TicketURLs"] as $TicketEntry)
   {
       $HTML .= '<tr><th class="tb-tickets">Block: '.$TicketEntry["Block"].'</th><th class="tb-tickets">Preis: '.$TicketEntry["Preis"].'</th><th class="tb-tickets"><a href='.$TicketEntry["URL"].' target="_blank">Verfügbare Tickets: '.$TicketEntry["AnzahlTickets"].'</a></th></tr>';
   }
   $HTML .= '<tr><th>&nbsp</th><th>&nbsp</th><th>&nbsp</th></tr>';
}
$HTML .= '</table></center></html>';
echo $HTML;


// Variable erstellen, falls nicht vorhanden, und den Inhalt setzen
$Parent  = IPS_GetParent($_IPS['SELF']);
$HTMLVariablenID = @IPS_GetVariableIDByName("Verfügbare Tickets", $Parent);
if ($HTMLVariablenID === false)
	{
    	$HTMLBox_VarID = CreateVariableByName($_IPS['SELF'], "Verfügbare Tickets", 3, "~HTMLBox", "");
		IPS_SetParent($HTMLBox_VarID, $Parent);
		SetValue($HTMLBox_VarID, $HTML);
	}
else
	{
		SetValue($HTMLVariablenID, $HTML);
	}
	
function Webseite_DOM($url) {
    $curl = curl_init($url);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    $page = curl_exec($curl);

    if(curl_errno($curl)) // Error-Check
    {
        echo 'Error: ' . curl_error($curl);
        exit;
    }
    curl_close($curl);

    $DOM = new DOMDocument;


    libxml_use_internal_errors(true);

    if (!$DOM->loadHTML($page))
        {
            $errors="";
            foreach (libxml_get_errors() as $error)  {
                $errors.=$error->message."<br/>";
            }
            libxml_clear_errors();
            print "libxml errors:<br>$errors";
            return;
        }
    $xpath = new DOMXPath($DOM);
    return $xpath;
}


function CreateVariableByName($ParentID, $VarName, $VarTyp, $VarProfile = "", $VarActionScript = "") {
    $VarID = @IPS_GetVariableIDByName($VarName, $ParentID);
   if($VarID === false) {
        $VarID = IPS_CreateVariable($VarTyp);
      IPS_SetParent($VarID, $ParentID);
      IPS_SetName($VarID, $VarName);
      IPS_SetInfo($VarID, "This variable was created by script #".$_IPS["SELF"]);
      if($VarProfile !== "") {
            IPS_SetVariableCustomProfile($VarID, $VarProfile);
        }
        if($VarActionScript !== "") {
            IPS_SetVariableCustomAction($VarID, $VarActionScript);
        }
    }
   return $VarID;
}
?>

Moin Moin,

ich habe mal von einem Bekannten ein nettes PHP Script bekommen, welches die Ticketbörse des HSV durchsucht und mir geziehlt noch verfügbare Stehplätze anbietet (mit direktem Link). Ich habe mir nun gedacht, ich baue das ganze unter IPS ein, da ich durch Zeitsteuerung das Script gezielt starten kann. Als Ergebnis erhalte ich einen HTML Code, den ich mir dann ja auch in das WebFront einbauen kann. Nun meine doch große Hürde - das Umbauen des Scripts. Ich scheiter gerade an der Ausgabe der Werte nicht als echo, sondern als nutzbare Variable, sodass ich diese in eine HTML Box schreiben lassen kann. Derzeit kann ich das Script manuell ausführen und das HTML Ergebnis via Copy&Paste in die Variable „HTML Box“ schreiben und es funktioniert. Vielleicht kann mir einer helfen, das ganze auch schöner umzusetzen. Ich würde schon einen Automatismus dahinter haben wollen :wink:

So schaut das eigenetliche Script aus

<?php include_once("simple_html_dom.php"); $target_url="https://ticketing.hsv.de/ticketboerse/default.php"; $html = new simple_html_dom(); $html->load_file($target_url); $count = 1; foreach($html->find('a') as $link) { if (strpos($link,'spielserie') !== false) { echo''; $already= false;

$target_url=$link->href;
$html1 = new simple_html_dom();
$html1->load_file($target_url);
$boolproof = false;

foreach($html1->find(‚a‘) as $link1)
{
if (strpos($link1,‚block=22A‘) !== false)
{
echo’’;
echo ‚22A
‘ ;
$boolproof = true;
};
if (strpos($link1,‚block=23A‘) !== false)
{
echo’’;
echo ‚23A
‘ ;
$boolproof = true;
};
if (strpos($link1,‚block=24A‘) !== false)
{
echo’’;
echo ‚24A
‘;
$boolproof = true;
};
if (strpos($link1,‚block=25A‘) !== false)
{
echo’’;
echo ‚25A
‘ ;
$boolproof = true;
};
if (strpos($link1,‚block=26A‘) !== false)
{
echo’’;
echo ‚26A
‘ ;
$boolproof = true;
};
if (strpos($link1,‚block=27A‘) !== false)
{
echo’’;
echo ‚27A
‘ ;
$boolproof = true;
};
if (strpos($link1,‚block=28A‘) !== false)
{
echo’’;
echo ‚28A
‘ ;
$boolproof = true;
};
if (strpos($link1,‚block=22C‘) !== false)
{
echo’’;
echo ‚22C
‘ ;
$boolproof = true;
};
}
if( $already == false)
{
foreach($html1->find(‚div‘) as $link2)
{
if(strpos($link2,‚Begegnung:‘) == true && strpos($link2,‚class=„main“‘) == false && strpos($link2,‚td class=„d_none“‘)== false
&& strpos($link2,‚class=„left“‘)== false)
{
echo’

’;
$stringposition = strpos($link2, ‚<img src=‘);

  		$new_string = substr($link2, 0, $stringposition);
  		//$stringposition1 = strpos($link2, $new_string);
  		$new_string2 = substr($link2, $stringposition+5, strlen($link2));
  		$stringposition2 = strpos($new_string2, '<img src=');
  		$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
  		$stringposition3 = strpos($new_string1, '/>');
  		$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));
  		$startString = strpos($new_string, '</b>');
  		$new_string = substr($new_string, $startString, strlen($new_string));
  		echo $new_string,' : ',$new_string4;
  		echo'</h1>';
  		$already = true;
  	   }
  	}
  }

if($count==1&&$boolproof==true)
{
echo’’;
}
if($boolproof == false)
{
echo’

Leider keine Stehplatzkarten vorhanden

’;
}
$boolproof = false;
$already = true;
$count++;
echo’’;
};
}
echo’’;

So das Ergebnis (HTML nicht filtern)

22A22C22C23A24A26A27A28A

Hamburger SV : Borussia Mönchengladbach

22A22C22C24A

Hamburger SV : FC Ingolstadt 04

22A22C22C23A26A27A28A

Hamburger SV : Hertha BSC

22A22C22C23A24A27A28A

Hamburger SV : TSG 1899 Hoffenheim

```

Dieses Ergebis würde ich gerne automatisch in eine Variable übergeben. Kann mir einer der Gurus helfen? :slight_smile:

Ps.: Wenn man das ganze weiterspinnt, würde ich sogar noch eine Pushnotification auslösen, sodass ich sofort weiss, wann ein Ticket verfügbar ist. Ich komme nur leider mit dem eigentlichen Code nur bedingt zurecht, sodass es mir schwer fällt aus einem echo eine Variable zu erzeugen, die ich dann später in IPS verwenden kann.

setvalue(id_der_string_variablen, $new);

Meinst Du das?

ne nicht ganz. Ich scheiter an der foreach Schleife. Ich scanne ja die Webseite auf vefügbare Plätze.

	foreach($html1->find('a') as $link1)
	{
    if (strpos($link1,'block=22A') !== false)
	{
		$var1 = '<a href="'.$link1->href.'">'.'22A</a>'.'--';
		//echo'<a href="';
		//echo $link1->href ;
		//echo'">';
		//echo '22A</a>' ;
		//echo '--';
	    $boolproof = true;

habe nun mal das „ECHO“ auskommentiert und stattdessen alles in eine Variable Schreiben lassen. Das klappt aber nur, wenn ein passender Link gefunden werden kann. Wie auch immer, da ich foreach nutze, kann ich die Webseite zwar mehrfach scannen, aber die Variable $var1 wird immer neu gefüllt. Ich benötige nun einen Weg, wie ich die Seite auslesen kann und für jede Party dediziert eine Variable zurückbekommen kann.
Wenn nun z.B die Partie 1 einen Platz 22A anbietet, wird die Variable gefüllt und ich kann Sie erfolgreich abgreifen. Hat die Partie 2, die durch das foreach auch gescannt wird, keinen Platz hat, bleibt die Variable $var1 entsprechend mit dem Wert der Partie 1 gefüllt. Erst wenn Partie 3 wieder einen Platz hat, wird die Variable geändert. Ich hoffe ihr versteht was ich meine? :wink:

Anbei mein aktuelles bereits angepasstes Script.


<?php
include_once("simple_html_dom.php");
$target_url="https://ticketing.hsv.de/ticketboerse/default.php";
$html = new simple_html_dom();
$html->load_file($target_url);
$count = 1;
foreach($html->find('a') as $link)
{
if (strpos($link,'spielserie') !== false)
{
    echo'<article id="article">';
	$already= false;


	$target_url=$link->href;
	$html1 = new simple_html_dom();
	$html1->load_file($target_url);
	$boolproof = false;

	foreach($html1->find('a') as $link1)
	{
    if (strpos($link1,'block=22A') !== false)
	{
		$var1 = '<a href="'.$link1->href.'">'.'22A</a>'.'--';
		//echo'<a href="';
		//echo $link1->href ;
		//echo'">';
		//echo '22A</a>' ;
		//echo '--';
	    $boolproof = true;
	};
	if (strpos($link1,'block=23A') !== false)
	{
	   $var2 = '<a href="'.$link1->href.'">'.'23A</a>'.'--';
		//echo'<a href="';
		//echo $link1->href ;
		//echo'">';
		//echo '23A</a>' ;
		$boolproof = true;
     };
	if (strpos($link1,'block=24A') !== false)
	{
	   $var3 = '<a href="'.$link1->href.'">'.'24A</a>'.'--';
		//echo'<a href="';
		//echo $link1->href ;
		//echo'">';
		//echo '24A</a>';
$boolproof = true;
    };
	if (strpos($link1,'block=25A') !== false)
	{
	   $var4 = '<a href="'.$link1->href.'">'.'25A</a>'.'--';
	 	//echo'<a href="';
		//echo $link1->href ;
		//echo'">';
		//echo '25A</a>' ;
$boolproof = true;
    }
	if (strpos($link1,'block=26A') !== false)
	{
	   $var5 = '<a href="'.$link1->href.'">'.'26A</a>'.'--';
		//echo'<a href="';
		//echo $link1->href ;
		//echo'">';
		//echo '26A</a>' ;
$boolproof = true;
    }
	if (strpos($link1,'block=27A') !== false)
		{
		$var6 = '<a href="'.$link1->href.'">'.'27A</a>'.'--';
		//echo'<a href="';
		//echo $link1->href ;
		//echo'">';
		//echo '27A</a>' ;
		$boolproof = true;
		};
	if (strpos($link1,'block=28A') !== false)
	{
	   $var7 = '<a href="'.$link1->href.'">'.'28A</a>'.'--';
		//echo'<a href="';
		//echo $link1->href ;
		//echo'">';
		//echo '28A</a>' ;
		$boolproof = true;
		};
	if (strpos($link1,'block=22C') !== false)
		{
		   $var8 = '<a href="'.$link1->href.'">'.'22C</a>';
			//echo'<a href="';
			//echo $link1->href ;
			//echo'">';
			//echo '22C</a>' ;
			$boolproof = true;
		};
	}
	if( $already == false)
		{
			foreach($html1->find('div') as $link2)
			{
			   if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
			   && strpos($link2,'class="left"')== false)
			   {
				//echo'<h3>';
				$stringposition = strpos($link2, '<img src=');

				$new_string = substr($link2, 0, $stringposition);

				//$stringposition1 = strpos($link2, $new_string);
				$new_string2 = substr($link2, $stringposition+5, strlen($link2));
				$stringposition2 = strpos($new_string2, '<img src=');
				$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
				$stringposition3 = strpos($new_string1, '/>');
				$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

				$startString = strpos($new_string, '</b>');
				$new_string = substr($new_string, $startString, strlen($new_string));

				//echo $new_string,' : ',$new_string4;

				//echo'</h3>';
				$already = true;
			   }
			}
		}
		
		$html_content = $var1.$var2.$var3.$var4.$var5.$var6.$var7.$var8.$new_string.' : '.$new_string4;
		
		
		echo $html_content;
	if($count==1&&$boolproof==true)
	{
	 echo'<iframe width="0" height="0" src="//www.youtube.com/embed/zPsZH0ub6Qs?start=28&autoplay=1" frameborder="0" allowfullscreen></iframe>';
	 }
	if($boolproof == false)
	{
	echo'<h2>Leider keine Stehplatzkarten vorhanden</h2>';
	}
	$boolproof = false;
	$already = true;
	$count++;
	echo'</article>';
};
}
echo'</body>';

Moin!

Du musst das ein wenig erweitern. Erstmal alles in ein Array schreiben und am Ende das Array als HTML-Tabelle ausgeben lassen.

Hier ein Projekt von mir, wo du es dir abschauen kannst :slight_smile:
Fußball Bundesliga - Tabelle (Daten in Array und HTMLBox) - www.dfb.de

Grüße,
Chris

Wenn ihr es fertig habt, würde ich es auch gern nutzen … :D:D:D

Letztes Jahr war es in der Relegation aber echt „etwas zu eng“ :D:D:D

LOL :smiley: :smiley: :smiley: Warum nur haben wollen und nicht helfen/mitmachen? Das Skript wurde doch schon geposted, du/ihr müsst es nur noch fertigstellen :slight_smile:

-Chris-

Vielen Dank für den Hinweis. Werde es probieren.

Ich arbeite dran. Wenn es funktioniert werde ich es versuchen als Installerscript so umzuschreiben das alles automatisch läuft.
Gebt mir Zeit :slight_smile:

So ich bin etwas weitergekommen, bzw habe das Script nochmal neu aufgebaut.
Ich kann nun das Array ausgeben und erhalte die Links, wenn ein Platz gefunden wurde. In meinem Beispiel suche ich erstmal nur nach Platz 22A

		foreach($html1->find('a') as $link1)
		{
			if (strpos($link1,'block=26A') !== false)

Unter https://ticketing.hsv.de/ticketboerse/default.php werden derzeit 4 Spiele angezeigt. Das kann aber auch mal 5 oder 6 sein. Ich kann mir diese auch ausgeben lassen über

foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					//echo'<h3>';
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));

					echo $new_string,' : ',$new_string4;

					//echo'</h3>';
					$already = true;
					}

So nun mein Problem. Wie bekomme ich die Ausgabe so hin, dass ich unter einem Spiel, in dem mal kein Platz frei ist, auch „kein Platz frei“ steht. Per array habe ich mal 4 Werte - bei 4 Spielen. Wenn aber mal kein Platz in der zweiten Begegnung ist, dass gibt das Array nur 3 Werte aus, aber immer hintereinander. Ich brauche irgendwas, was ich ins array schreiben kann, wenn kein Platz gefunden wurde. In etwa so…Wenn Platz da, dann schreib ins Array den Link, wenn kein Platz, dann schreib ins array den String „kein Platz frei“.
Ich habe aber ein Problem in der foreach Schleife eine Else Bedingung einzubauen, da es sonst alles kaputt geht :frowning:

Hier mein Stand heute

<?php
$Platz = PlatzAuslesenInArray();
 var_dump( $Platz );
 
function PlatzAuslesenInArray() 
{
include_once("simple_html_dom.php");
$target_url="https://ticketing.hsv.de/ticketboerse/default.php";
$html = new simple_html_dom();
$html->load_file($target_url);
$count = 1;

		foreach($html->find('a') as $link)
	{
			if (strpos($link,'spielserie') !== false)
		{
			echo'<article id="article">';
			$already= false;


			$target_url=$link->href;
			$html1 = new simple_html_dom();
			$html1->load_file($target_url);
			$boolproof = false;
			

		foreach($html1->find('a') as $link1)
		{
			if (strpos($link1,'block=22A') !== false)
			{
				$Platz["22A"][] = utf8_decode($link1->href);
				//$var1 = '<a href="'.$link1->href.'">'.'22A</a>'.'--';
				//echo'<a href="';
				//echo $link1->href ;
				//echo'">';
				//echo '22A</a>' ;
				//echo '--';
				$boolproof = true;
		
			if( $already == false)
			{
				foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					//echo'<h3>';
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));

					//echo $new_string,' : ',$new_string4;

					//echo'</h3>';
					$already = true;
					}
				}
		
			}
	
			}
		}
		}
	}
	return $Platz;
}
	
?> 

Ps.: bin für jede Verbessung dankbar!

UPDATE

So ich bin wieder etwas weiter. Ich kann alles super auslesen in Arrays schreiben, jedoch scheitere ich nun scheinbar an einer „sortierten“ Ausgabe.
Mein Code sieht derzeit wie folgt aus (kann jeder einbinden und ausführen) Man benötigt nur noch die angehängte Datei „simple_html_dom.php“ im IPS Script Ordner.

<?php
include_once("simple_html_dom.php");
$target_url="https://ticketing.hsv.de/ticketboerse/default.php";
$html = new simple_html_dom();
$html->load_file($target_url);
$count = 1;
$Sonderzeichen = array("ö" => "ö", "ü" => "ü", "ß" => "ß", "ä" => "ä", "Ä" => "Ä", "Ãœ" => "Ü", "Ö" => "Ö", "é" => "Ë", "é" => "é");

		foreach($html->find('a') as $link)
	{
			if (strpos($link,'spielserie') !== false)
		{
			echo'<article id="article">';
			$already= false;


			$target_url=$link->href;
			$html1 = new simple_html_dom();
			$html1->load_file($target_url);
			$boolproof = false;

			if( $already == false)
			{
				foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=22A') !== false)
					{
					$Platz["22A"][] = utf8_decode($link1->href);
					$Begegnung1["22A"][] = utf8_decode($new_string);
					$Begegnung2["22A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
				foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=23A') !== false)
					{
					$Platz["23A"][] = utf8_decode($link1->href);
					$Begegnung1["23A"][] = utf8_decode($new_string);
					$Begegnung2["23A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
								foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=24A') !== false)
					{
					$Platz["24A"][] = utf8_decode($link1->href);
					$Begegnung1["24A"][] = utf8_decode($new_string);
					$Begegnung2["24A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
								foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=25A') !== false)
					{
					$Platz["25A"][] = utf8_decode($link1->href);
					$Begegnung1["25A"][] = utf8_decode($new_string);
					$Begegnung2["25A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
								foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=26A') !== false)
					{
					$Platz["26A"][] = utf8_decode($link1->href);
					$Begegnung1["26A"][] = utf8_decode($new_string);
					$Begegnung2["26A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
								foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=27A') !== false)
					{
					$Platz["27A"][] = utf8_decode($link1->href);
					$Begegnung1["27A"][] = utf8_decode($new_string);
					$Begegnung2["27A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
			}
		}
	}

//Uncomment für Debugging

print_r ( $Begegnung1);
print_r ( $Begegnung2);
print_r ( $Platz );


//Ab hier wird die Ausgabe zusammengebaut, die dann später in die IPS Variable kommen soll
// $htmla1 = '<html>';

// for($a=0;$a<count($Begegnung1["22A"]);$a++){
    // for($b=0;$b<count($Begegnung2["22A"]);$b++){
          // for($c=0;$c<count($Platz["22A"]);$c++){
     
                // $htmla1 .= '<H3>'.$Begegnung1["22A"][$a].' : '.$Begegnung2["22A"][$a].'</H3>';
// .'<p><a href="'.$Platz["22A"][$a].'">22A</a><p>'				
// }
// for($a=0;$a<count($Begegnung1["23A"]);$a++){
    // // for($b=0;$b<count($Begegnung2["22A"]);$b++){
          // // for($c=0;$c<count($Platz["22A"]);$c++){
     
                // $htmla1 .= '<p><a href="'.$Platz["23A"][$a].'">23A</a><p>';			
// }

// $htmla1 .= '</html>';
// echo $htmla1;

?>

Die Ausgabe danke print_r sieht wie folgt aus

Array
(
    [22A] => Array
        (
            [0] => 
Hamburger SV

            [1] => 
Hamburger SV

            [2] => 
Hamburger SV

            [3] => 
Hamburger SV

        )

    [23A] => Array
        (
            [0] => 
Hamburger SV

            [1] => 
Hamburger SV

            [2] => 
Hamburger SV

            [3] => 
Hamburger SV

        )

    [24A] => Array
        (
            [0] => 
Hamburger SV

            [1] => 
Hamburger SV

            [2] => 
Hamburger SV

        )

    [25A] => Array
        (
            [0] => 
Hamburger SV

            [1] => 
Hamburger SV

        )

    [26A] => Array
        (
            [0] => 
Hamburger SV

            [1] => 
Hamburger SV

        )

    [27A] => Array
        (
            [0] => 
Hamburger SV

            [1] => 
Hamburger SV

            [2] => 
Hamburger SV

        )

)
Array
(
    [22A] => Array
        (
            [0] => 
Borussia M?nchengladbach


            [1] => 
FC Ingolstadt 04


            [2] => 
Hertha BSC


            [3] => 
TSG 1899 Hoffenheim


        )

    [23A] => Array
        (
            [0] => 
Borussia M?nchengladbach


            [1] => 
FC Ingolstadt 04


            [2] => 
Hertha BSC


            [3] => 
TSG 1899 Hoffenheim


        )

    [24A] => Array
        (
            [0] => 
Borussia M?nchengladbach


            [1] => 
Hertha BSC


            [2] => 
TSG 1899 Hoffenheim


        )

    [25A] => Array
        (
            [0] => 
Borussia M?nchengladbach


            [1] => 
Hertha BSC


        )

    [26A] => Array
        (
            [0] => 
Borussia M?nchengladbach


            [1] => 
Hertha BSC


        )

    [27A] => Array
        (
            [0] => 
Borussia M?nchengladbach


            [1] => 
Hertha BSC


            [2] => 
TSG 1899 Hoffenheim


        )

)
Array
(
    [22A] => Array
        (
            [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=22A&osCsid=7edb5a1c7cbee145f1ee635f3d921614
            [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=461&block=22A&osCsid=1f2f59980957f23c2f31db2dd99a5416
            [2] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=22A&osCsid=618e5b4b01a84d969411b8180d2618c7
            [3] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=459&block=22A&osCsid=80e081248d9433afe16ed4dc3fbe36cc
        )

    [23A] => Array
        (
            [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=23A&osCsid=7edb5a1c7cbee145f1ee635f3d921614
            [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=461&block=23A&osCsid=1f2f59980957f23c2f31db2dd99a5416
            [2] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=23A&osCsid=618e5b4b01a84d969411b8180d2618c7
            [3] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=459&block=23A&osCsid=80e081248d9433afe16ed4dc3fbe36cc
        )

    [24A] => Array
        (
            [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=24A&osCsid=7edb5a1c7cbee145f1ee635f3d921614
            [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=24A&osCsid=618e5b4b01a84d969411b8180d2618c7
            [2] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=459&block=24A&osCsid=80e081248d9433afe16ed4dc3fbe36cc
        )

    [25A] => Array
        (
            [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=25A&osCsid=7edb5a1c7cbee145f1ee635f3d921614
            [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=25A&osCsid=618e5b4b01a84d969411b8180d2618c7
        )

    [26A] => Array
        (
            [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=26A&osCsid=7edb5a1c7cbee145f1ee635f3d921614
            [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=26A&osCsid=618e5b4b01a84d969411b8180d2618c7
        )

    [27A] => Array
        (
            [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=27A&osCsid=7edb5a1c7cbee145f1ee635f3d921614
            [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=27A&osCsid=618e5b4b01a84d969411b8180d2618c7
            [2] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=459&block=27A&osCsid=80e081248d9433afe16ed4dc3fbe36cc
        )

)

Ich will nun eine HTML Auflistung haben, der mir z.B. vom 1. Array 22A die Heimmannschaft und vom 2. Array 22A die Gegnermannschaft ausgibt. Darunter soll dann aus den 3. Array 22A, dem 3. Array 23A, dem 4. Array 24A …bis 3. Array 27A die Links zu den Karten ausgegeben werden. Wenn das durch ist, soll dann mit dem 1. Array 23A und dem 2. Array 23A die Manschaften ausgelesen werden. Dannach dann wieder darunter die ganzen Plätze. Ich komme leider nicht mehr weiter. Kann mir eine Helfen?

simple_html_dom.php.txt (35.3 KB)

Schau dir nochmal hier das Skript an, ich mache dort quasi das gleiche was du auch machen willst:
Fußball Bundesliga - Tabelle (Daten in Array und HTMLBox) - www.dfb.de

Wäre quasi dieser Teil:

for ($h=0; $h<count($BundesligaTabelleAR["Platz"]); $h++)
{
	$HTML .= '<tr><th class="tb-cl">'.$BundesligaTabelleAR["Platz"][$h].'</th><th class="tb-cl"><img height="25" width="25" src="'.$BundesligaTabelleAR["VereinLogo"][$h].'"></img></th><th class="tb-cl">'.$BundesligaTabelleAR["VereinName"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Spiele"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Siege"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Unentschieden"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Niederlagen"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Torverhaeltnis"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["TorDifferenz"][$h].'</th><th class="tb-cl">'.$BundesligaTabelleAR["Punkte"][$h].'</th></tr>';
}

Ich würde also alles in ein Array schreiben und dann kannst du einfach nach diesem Schema vorgehen. Geht aber auch mit mehrere Arrays.
Ist eigentlich gar nicht schwer, kann es nur leider grad nicht besser beschreiben.

Grüße,
Chris

Ja so habe ich es bereits getestet, aber es scheint doch etwas anders bei mir zu sein.
Ich kann das schwer beschreiben. Ich lese ja die Seite komplett aus. Im 1. Array kommt ja immer die Heimmannschaft und im 2. Array immer die Gastmannschaft. Ich lese dann aus, ob es die Plätze 22A-27A als Karten gibt und schreibe dann den Link zum Ticket in das jeweilige 3. Array von 22A-27A. In jedem Array, also 22A-27A können unterschiedlich viele Einträge sein, da es ja sein kann dass es nicht zu allen Spielen eineKarten für z.B. 25A mehr gibt.
Dann erhalte ich z.B. bei 4 Spielen und nur 3 davon haben Karten für 25A, im 1. Array bis 3. Array für 25A nur 3 Einträge. Das 1. und 2. Array sortieren dann die Namen der Mannschaft nach oben. Es kann also mal die Gastmannschaft im Array 26A auf Platz 2 stehen und in 25A auf Platz 3. Es ist also nicht statisch, sondern absolut dynamisch.
Zudem soll final natürlich auf der HTML Seite immer nur einmal die Paarung des Spiels stehen und darunter dann als Link die freihen Plätze.
Nutze ich dein Beispiel, kann ich zwar alles schön ausgeben, aber habe dann immer zu jedem Array 22A - 27A auch die Paarung der Mannschaft mit drin. Dies muss nun ausgesondert werden (also statisch) und nur die Plätze müssen dynamisch zu den Paarungen eingetragen werden.

Ist das verständlich wie ich das schreibe? :smiley: :smiley: :smiley:

So halbwegs denke ich zu verstehen was du schreibst…hoffe ich :smiley:

Aber ich bleibe dabei > schreib dir alles in 1 Array (vorher gut den Aufbau überlegen), dann hast du es am Ende einfacher/übersichtlicher mit dem Sortieren und Auslesen/Ausgeben…

Du hast dann z.B. so ein Array:

$HSV_Tickets_AR[0]["HeimTeam"] = "HSV";
$HSV_Tickets_AR[0]["GastTeam"] = "OFC";
$HSV_Tickets_AR[0]["TicketURL"] = "http://www.blablabla.de";

$HSV_Tickets_AR[1]["HeimTeam"] = "FCB";
$HSV_Tickets_AR[1]["GastTeam"] = "HSV";
$HSV_Tickets_AR[1]["TicketURL"] = "http://www.blablabla.de";

$HSV_Tickets_AR[2]["HeimTeam"] = "HSV";
$HSV_Tickets_AR[2]["GastTeam"] = "VFB";

Soooo…jetzt kannst du prüfen mit „if (array_key_exists(„TicketURL“, $HSV_Tickets_AR[$count]) == true)“…bei 0 und 1 wäre das TRUE und das Skript würde in das IF gehen. Bei 2 wäre es aber FALSE und es würde nicht in das IF gehen und dann z.B. keine Ausgabe machen…

Blöd sowas theoretisch zu beschreiben, aber du schaffst das schon :slight_smile:

Grüße,
Chris

PS: Wer den Witz im Post findet, der darf lachen hrhr :wink: :smiley: :stuck_out_tongue:

ok guter Gedanke. Aber wie bekomme ich es hin, dass er mir im Array einfach bei einem Durchgang was leer lässt?
Ich habe es mal angepasst…hier ein Auszug

					$HSVAR["Platz"][] = utf8_decode($link1->href);
					$Begegnung = $new_string.' : '.$new_string4;
					$HSVAR["Begegnung"][] = utf8_decode($Begegnung);

bekomme dann aber derzeit für das Array nur bei den Begegnungen einen Eintrag, wenn es auch Karten gibt, da die Prüfung über die Plätze geht auf der Seite :frowning:

Ps.: ich kann bei mir glaub ich nicht leere Werte ins Array schreiben, da ich bei den IF Abfragen kein ELSE verwenden kann, da sonst alles zumüllt. Ich scanne ja eine Webseite und suche z.B. nach dem String in Verbindung mit einem Platz
Beispiel

foreach($html1->find('a') as $link1)
	{
    if (strpos($link1,'block=22A') !== false)
	{
		$HSVAR["Platz"][] = utf8_decode($link1->href);

Würde ich da noch else nutzen, um einen leeren Wert zu schreiben, müllt alles zu :wink:

Moin!

Entweder denkst du total Banane oder ich :smiley: Ein „array_key_exists“ mit „false“ ist doch wie ein leerer Eintrag?! Alternativ kannst du dir auch einen Platzhalter reinschreiben wie z.B. „LEER“ :smiley: Und wenn „LEER“ kommt, dann gibt aus „Keine freien Plätze“ ?! Verstehe das Problem glaube ich nicht :confused:

Grüße,
Chris

Also ich verstehe das schon mit dem array und dem Wert ‚LEER‘ aber bei meinem Aufbau wird das eben nicht klappen. Anbei mal mein aktueller Stand. Führe den einfach mal aus und schau dir das Ergebnis an :wink:
Vielleicht weisst du dann woran ich gedanklich gerade scheiter :slight_smile:

<?php
include_once("simple_html_dom.php");
$target_url="https://ticketing.hsv.de/ticketboerse/default.php";
$html = new simple_html_dom();
$html->load_file($target_url);
$count = 1;
$Sonderzeichen = array("ö" => "ö", "ü" => "ü", "ß" => "ß", "ä" => "ä", "Ä" => "Ä", "Ãœ" => "Ü", "Ö" => "Ö", "é" => "Ë", "é" => "é");

		foreach($html->find('a') as $link)
	{
			if (strpos($link,'spielserie') !== false)
		{
			echo'<article id="article">';
			$already= false;


			$target_url=$link->href;
			$html1 = new simple_html_dom();
			$html1->load_file($target_url);
			$boolproof = false;

			if( $already == false)
			{
				foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					$Begegnung = $new_string.' : '.$new_string4;
					$HSVAR["Begegnung"][] = utf8_decode($Begegnung);
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=22A') !== false)
					{
					$HSVAR["Platz"][] = utf8_decode($link1->href);

					//$Begegnung2["22A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
				foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=23A') !== false)
					{
					$HSVAR["Platz"][] = utf8_decode($link1->href);
					$Begegnung = $new_string.' : '.$new_string4;
					$HSVAR["Begegnung"][] = utf8_decode($Begegnung);
					//$Begegnung2["23A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
								foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=24A') !== false)
					{
					$HSVAR["Platz"][] = utf8_decode($link1->href);
					$Begegnung = $new_string.' : '.$new_string4;
					$HSVAR["Begegnung"][] = utf8_decode($Begegnung);
					//$Begegnung2["24A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
								foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=25A') !== false)
					{
					$HSVAR["Platz"][] = utf8_decode($link1->href);
					$Begegnung = $new_string.' : '.$new_string4;
					$HSVAR["Begegnung"][] = utf8_decode($Begegnung);
					//$Begegnung2["25A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
								foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=26A') !== false)
					{
					$HSVAR["Platz"][] = utf8_decode($link1->href);
					$Begegnung = $new_string.' : '.$new_string4;
					$HSVAR["Begegnung"][] = utf8_decode($Begegnung);
					//$Begegnung2["26A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
								foreach($html1->find('div') as $link2)
				{
					if(strpos($link2,'<b>Begegnung:</b>') == true && strpos($link2,'class="main"') == false && strpos($link2,'td class="d_none"')== false
				   && strpos($link2,'class="left"')== false)
				   {
					$stringposition = strpos($link2, '<img src=');

					$new_string = substr($link2, 0, $stringposition);

					//$stringposition1 = strpos($link2, $new_string);
					$new_string2 = substr($link2, $stringposition+5, strlen($link2));
					$stringposition2 = strpos($new_string2, '<img src=');
					$new_string1 = substr($new_string2, $stringposition2, strlen($new_string2));
					$stringposition3 = strpos($new_string1, '/>');
					$new_string4 = substr($new_string1, $stringposition3+2, strlen($new_string1));

					$startString = strpos($new_string, '</b>');
					$new_string = substr($new_string, $startString, strlen($new_string));
					foreach($html1->find('a') as $link1)
					{
					if (strpos($link1,'block=27A') !== false)
					{
					$HSVAR["Platz"][] = utf8_decode($link1->href);
					$Begegnung = $new_string.' : '.$new_string4;
					$HSVAR["Begegnung"][] = utf8_decode($Begegnung);
					//$Begegnung2["27A"][] = strtr(utf8_decode($new_string4), $Sonderzeichen);
					$boolproof = true;
					$already = true;
					}
					}

					}
				}
			}
		}
	}

//Uncomment für Debugging

print_r ( $HSVAR);
// print_r ( $Begegnung2);
// print_r ( $Platz );


//Ab hier wird die Ausgabe zusammengebaut, die dann später in die IPS Variable kommen soll
// $htmla1 = '<html>';

// for($a=0;$a<count($Begegnung1["22A"]);$a++){
    // // for($b=0;$b<count($Platz["23A"]);$b++){
          // // for($c=0;$c<count($Platz["24A"]);$c++){

                // $htmla1 .= '<H3>'.$Begegnung1["22A"][$a].'</H3>'.'<p><a href="'.$Platz["22A"][$a].'">22A</a><p>';
// //.'<p><a href="'.$Platz["22A"][$a].'">22A</a><p>'
// }
// for($a=0;$a<count($Begegnung1["23A"]);$a++){
    // // for($b=0;$b<count($Begegnung2["22A"]);$b++){
          // // for($c=0;$c<count($Platz["22A"]);$c++){

                // $htmla1 .= '<H3>'.$Begegnung1["23A"][$a].'</H3>'.'<p><a href="'.$Platz["23A"][$a].'">22A</a><p>';
// }

// $htmla1 .= '</html>';
// echo $htmla1;

?>

Woher bekomme ich die „simple_html_dom.php“? >> Selbst beantwortet > PHP Simple HTML DOM Parser - Browse Files at SourceForge.net

Warum nutzt du nicht das normale „Dom/XPath“? Was ist mit der include-Datei besser/anders?
> 30 Sek. Laufzeit bei so einem bissi Kram machen ist hart, wirkt nicht sonderlich performant beim 1. Test :-\

-Chris-

Also bei mir ist die Laufzeit max 8 sekunden? Mit dem gleichen Script, was ich gepostet habe. Ggf. hatte die Webseite einen Aussetzer? Kann ich so nicht nachstellen.

Ich bin absolut kein PHP Profi. Ich habe den gesamten Code von einem Bekannten und ihn einfach nur umgeschrieben, sodass ich die Werte in ein IPS Value als HTML Box bekomme. Also das ist mein Ziel für die Webseite. Normalerweise ist alles mit „ECHO“ augebaut und funktioniert wunderbar. Aber „ECHO“ bringt mir reichlich wenig, um es als Variable in IPS speichern zu können :wink:

Deswegen hab ich dir dauernd die Bundesliga Tabelle verlinkt, weil da ist alles drin was du brauchst. Bis auf Kleinigkeiten… Das als Basis nehmen wäre leichter gewesen…

Nur kurz zur Info, damit du nicht denkst hier passiert nichts, ich bau das grad mal neu :wink:

Grüße,
Chris

Wahnsinn, das ist echt super nett von dir. Ich bin gespannt, wie du es machst. Werde daraus sicher was lernen :slight_smile:

Sooooo…

Habe jetzt dieses Array:

Array
(
    [0] => Array
        (
             => https://ticketing.hsv.de/ticketboerse/default.php?spielserie=536&osCsid=229f5cc8085a6f55d6937994dc00df2f
            [Gegner] => Borussia Mönchengladbach
            [TicketURLs] => Array
                (
                    [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=22A&osCsid=9cd73f2868028f11747b6aae1b8f46e1
                    [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=23A&osCsid=9cd73f2868028f11747b6aae1b8f46e1
                    [2] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=24A&osCsid=9cd73f2868028f11747b6aae1b8f46e1
                    [3] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=25A&osCsid=9cd73f2868028f11747b6aae1b8f46e1
                    [4] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=26A&osCsid=9cd73f2868028f11747b6aae1b8f46e1
                    [5] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=536&block=27A&osCsid=9cd73f2868028f11747b6aae1b8f46e1
                )

        )

    [1] => Array
        (
             => https://ticketing.hsv.de/ticketboerse/default.php?spielserie=461&osCsid=229f5cc8085a6f55d6937994dc00df2f
            [Gegner] => FC Ingolstadt 04
            [TicketURLs] => Array
                (
                    [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=461&block=22A&osCsid=3265c6db4178128c7f51e90dfaefab27
                    [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=461&block=23A&osCsid=3265c6db4178128c7f51e90dfaefab27
                )

        )

    [2] => Array
        (
             => https://ticketing.hsv.de/ticketboerse/default.php?spielserie=460&osCsid=229f5cc8085a6f55d6937994dc00df2f
            [Gegner] => Hertha BSC
            [TicketURLs] => Array
                (
                    [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=22A&osCsid=f66238858841af0366443a21ac60fd99
                    [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=23A&osCsid=f66238858841af0366443a21ac60fd99
                    [2] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=24A&osCsid=f66238858841af0366443a21ac60fd99
                    [3] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=26A&osCsid=f66238858841af0366443a21ac60fd99
                    [4] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=460&block=27A&osCsid=f66238858841af0366443a21ac60fd99
                )

        )

    [3] => Array
        (
             => https://ticketing.hsv.de/ticketboerse/default.php?spielserie=459&osCsid=229f5cc8085a6f55d6937994dc00df2f
            [Gegner] => TSG 1899 Hoffenheim
            [TicketURLs] => Array
                (
                    [0] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=459&block=22A&osCsid=cf38bb5f9551d9f8a9d5814f8c733c10
                    [1] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=459&block=23A&osCsid=cf38bb5f9551d9f8a9d5814f8c733c10
                    [2] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=459&block=24A&osCsid=cf38bb5f9551d9f8a9d5814f8c733c10
                    [3] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=459&block=26A&osCsid=cf38bb5f9551d9f8a9d5814f8c733c10
                    [4] => https://ticketing.hsv.de/ticketboerse/default_cards.php?spielserie=459&block=27A&osCsid=cf38bb5f9551d9f8a9d5814f8c733c10
                )

        )

)

Und was willst du jetzt wie ausgeben lassen? Einfach das Spiel „HSV - Ingolstadt“ und darunter dann alle Links zu den Tickets? Beschreib es mal mit deinen Worten.

Grüße,
Chris