2016-05-09 9 views
0

Ich erhalte eine Seite, die eine Seite mit einigen Style-Tags, Tabellen und anderen nicht wichtigen Inhalten ist. Ich Speicherung dieser in einem vorübergehenden, und sie alle mit AJAXEntfernen von unerwünschten Elementen aus der Tabelle simple_html_dom

$result_match = file_get_contents('www.example.com'); 

set_transient('match_results_details', $result_match, 60 * 60 * 12); 

$match_results = get_transient('match_results_details'); 

if ($match_results != '') { 

    $html = new simple_html_dom(); 
    $html->load($match_results); 

    $out = ''; 

    $out .= '<div class="match_info_container">'; 
    if (!empty($html) && is_object($html)) { 
     foreach ($html->find('table') as $table => $table_value) { 
      $out .= preg_replace('/href="?([^">]+)"/', '', $table_value); 
     } 
    } 
    $out .= '</div>'; 

    wp_die ($out); 

} else { 
    $no_match_info = esc_html__('No info available', 'kompisligan'); 
    wp_die($no_match_info); 
} 

Nun ist die Tabelle Anker hatte zu holen und ich brauchte das zu entfernen, so dass ich verwendet preg_replace jeden Anker zu finden und leeren Sie es heraus. Ich weiß, dass Sie den Inhalt mit find() Methode manipulieren können, aber ich hatte keinen Erfolg damit.

Jetzt möchte ich das gesamte <tfoot> Tag loswerden, und was es enthält.

Aber jedes Mal, wenn ich versuche, etwas zu "finden", gibt der Ajax Fehler zurück, was bedeutet, dass etwas in meinem Code falsch ist.

Wie manipuliere ich den Inhalt eines bereits gefundenen Elements mit simple_html_dom? Ich habe versucht, den Inhalt von $html auszugeben, so dass ich sehen kann, was ich herausbekomme, aber mein AJAX-Anruf dauert ewig und ich kann es nicht rausbekommen.

+0

Warum nicht das Standard-DOMDocument mit PHP verwenden, das ist es, was ich benutze, um einige HTML-Seiten abzureißen, bevor ich sie benutze. Es ist sehr einfach zu bedienen. Für das Entfernen von tfoot wäre das '$ tfoot = $ dom-> getElementsByTagName ('tfoot'); if ($ tfoot! == null) $ tfoot-> parentNode-> removeChild ($ tfoot); '. – Kalkran

Antwort

1

Sie könnten dies versuchen, mit eingebauten DOMDocument anstelle von Simple_html_dom. Wenn Ihr Ajax-Anruf jedoch ein Zeitlimit aufweist, kann dies ein anderes Problem sein (das Laden von example.com ist nicht möglich).

+0

Hmmm, ich werde das ausprobieren. Vielen Dank! –

+0

Das ist cool, aber kann ich die Tabellenwerte in einigen Wrappern bekommen? Denn so werden in meinem 'nodeValue' und' textContent' meine Daten aber unverändert ausgegeben. Wie kann ich die Daten in der Tabelle unterscheiden? –

+0

Ich habe es geschafft, die Informationen herauszubekommen (jetzt muss ich sehen, ob ich meine Daten richtig gespeichert habe), indem ich Elemente nach Tag-Namen "vorspiele", ihre Objekte aus jeder Tabelle, Kind-Knoten, Items usw. ankreuze. Danke für den Start:) –

Verwandte Themen