2016-05-30 2 views
0

Ich habe eine Systemstatus-Seite von einem Partner, den ich zu konvertieren versuche, so dass ich seine Eingabe in meine eigene Service-Seite automatisieren kann. Der Status des Dienstes wird von einer Klasse <span> bereitgestellt. Ich weiß, dass dies alles andere als ideal ist, aber nur so können sie Updates bereitstellen.Konvertieren von HTML-Tags in PHP-Array

Nachfolgend finden Sie eine Kopie der HTML:

<ul class="item-3"> 
    <li class="status service1"> 
     <span class="icon"></span> 
     <h6> 
     SERVICE 1 
     </h6> 
     <p> 
     Updated: 
     9:52 AM CST Apr, 24 
     </p> 
     <span class="arrow up"></span> 
    </li> 
    <li class="status service2"> 
     <span class="icon"></span> 
     <h6> 
     SERVICE 2 
     </h6> 
     <p> 
     Updated: 
     9:52 AM CST Apr, 24 
     </p> 
     <span class="arrow up"></span> 
    </li> 
    <li class="status service3"> 
     <span class="icon"></span> 
     <h6> 
     SERVICE 3 
     </h6> 
     <p> 
     Updated: 
     9:52 AM CST Apr, 24 
     </p> 
     <span class="arrow up"></span> 
    </li> 
</ul> 

Ich brauche die <span class="arrow up"> Werte zu greifen, da dies der Service-Status ist, und die <li class="status service3"> wie dies sagt mir, welchen Dienst es sich handelt.

Da meine Statusseite API IDs und nicht "up/down" usw. verwendet, brauche ich die Status und Dienste in Arrays, damit ich sie in meine Formate konvertieren kann.

+0

http://stackoverflow.com/questions/1592438/create-array-from-the-contents-of-div-tags-in -php –

+0

http://php.net/manual/en/function.preg-match-all.php –

Antwort

0
$xml = new SimpleXMLElement($html); 

$result = $xml->xpath('//ul/li'); 
$up = array(); //array of servises that is 'up' 
$down = array(); //array of servises that is 'down' 
foreach ($result as $item) 
{ 
    if (strpos($item->span[1]->attributes()->class, 'up') !== false) 
    { 
     $up[] = str_replace("status ", "", $item->attributes()->class); 
    } 

    if (strpos($item->span[1]->attributes()->class, 'down') !== false) 
    { 
     $down[] = str_replace("status ", "", $item->attributes()->class); 
    } 
} 

var_dump($up); 
var_dump($down); 

Will Ausgang für "Up" Systemstatus

array(3) { 
    [0]=> 
    string(8) "service1" 
    [1]=> 
    string(8) "service2" 
    [2]=> 
    string(8) "service3" 
} 
+0

Vielen Dank @Dumkaaa, aber wie sage ich das HTML aus der Datei laden? –

+0

@ rote Spinne einfache Verwendung file_get_contents lo Last von anderer Website: '$ html = file_get_contents ('http://example.com');' oder von Ihrer Website include_path '// <= PHP 5 $ file = file_get_contents ('./ people.txt', true); //> PHP 5 $ file = file_get_contents ('./ people.txt', FILE_USE_INCLUDE_PATH); ' – Dumkaaa

+0

danke @Dumkaaa, die scheinen es zu laden, aber ich habe immer noch ein Problem damit, das richtig zu machen. Ich kann das gesamte SimpleXMLElement ausgeben, aber nicht das oben gezeigte Array-Beispiel. –