Я получаю страницу, которая представляет собой страницу с некоторыми тегами стиля, таблицей и другим неинтересным контентом. Я сохраняю это в преходящем состоянии и получаю все это с помощью AJAX
$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); }
Теперь в таблице были якоря, и мне нужно было удалить это, поэтому я использовал preg_replace
чтобы найти какой-либо якорь и выпустить его. Я знаю, что вы можете манипулировать содержимым с помощью метода find()
, но я не имел успеха в этом.
Теперь я хотел бы избавиться от всего <tfoot>
и того, что он содержит.
Но каждый раз, когда я пытаюсь «найти» что-то, ajax возвращает ошибку, что означает, что что-то в моем коде неверно.
Как управлять содержимым уже найденного элемента с помощью simple_html_dom
? Я попытался вывести содержимое $html
чтобы я мог видеть, что я выйду, но мой вызов AJAX длится вечно, и я не могу его вытащить.
Вы можете попробовать это, используя встроенный DOMDocument вместо simple_html_dom. Однако, если ваш вызов Ajax исчерпал время, это может быть другой проблемой (не имея возможности загрузить example.com или около того).
if ( $match_results != '') { $html = new DOMDocument(); // Suppress errors @$html->loadHTML($match_results); $out = '<div class="match_info_container">'; // Remove all "href" tags from <a> foreach($html->getElementsByTagName('a') as $href) $href->setAttribute('href', ''); // Remove Tfoot foreach($html->getElementsByTagName('tfoot') as $tfoot) $tfoot->parentNode->removeChild($tfoot); // Put the contents of every <table> in the div. foreach($html->getElementsByTagName('table') as $table) $out .= $table->nodeValue; $out .= '</div>'; wp_die ( $out ); } else {