从 table simple_html_dom 中删除不需要的元素
Removing unwanted elements from table simple_html_dom
我正在获取一个页面,该页面包含一些样式标签、table 和其他非重要内容。我将其临时存储,并使用 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);
}
现在 table 有锚点,我需要删除它,所以我使用 preg_replace
找到任何锚点并将其清空。我知道您可以使用 find()
方法操作内容,但我没有成功。
现在我想删除整个 <tfoot>
标签及其包含的内容。
但每次我尝试 'find' 时,都会出现 ajax returns 错误,这意味着我的代码中有错误。
如何使用 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 {
我正在获取一个页面,该页面包含一些样式标签、table 和其他非重要内容。我将其临时存储,并使用 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);
}
现在 table 有锚点,我需要删除它,所以我使用 preg_replace
找到任何锚点并将其清空。我知道您可以使用 find()
方法操作内容,但我没有成功。
现在我想删除整个 <tfoot>
标签及其包含的内容。
但每次我尝试 'find' 时,都会出现 ajax returns 错误,这意味着我的代码中有错误。
如何使用 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 {