我有一个包含代码的HTML页面
<li><span class="li-time">00:30</span>
<span class="li-title">Headline News</span></li>
<li><span class="li-time">00:31</span>
<span class="li-title">Money Mind</span></li>
<li><span class="li-time">01:00</span>
<span class="li-title">Headline News</span></li>
<li><span class="li-time">01:01</span>
<span class="li-title">Singapore Tonight</span></li>
并且没有确定数量的值。我想要做的是格式化结果,以便以
格式显示所有时间/标题00:30 Headline News
00:31 Money Mind
01:00 Headline News
如果我不必使用外部解析器,那将是最好的。排序新的PHP,希望你们可以建议我:)。
答案 0 :(得分:3)
感谢所有建议人员,设法使用DOM解决我的问题
<?php
$data = file_get_contents("html");
$pattern = '/<ul id="schedule">.*<\/ul>/';
preg_match($pattern, $data, $matches); // to obtain sample code (<li><span...>)
function getTextBetweenTags($string, $tagname){
$d = new DOMDocument();
$d->loadHTML($string);
$return = array();
foreach($d->getElementsByTagName($tagname) as $item){
$return[] = $item->textContent;
}
return $return;
}
$count = 0;
$txt = getTextBetweenTags($matches[0], "span");
foreach ($txt as $val){
$count++;
echo $val;
echo "\t";
if (($count % 2) == 0){
print "<br>";
}
}
?>
答案 1 :(得分:0)
如果您只想控制布局和排版,则必须使用CSS,而不是PHP。
答案 2 :(得分:0)
在这种简单的情况下,只需致电$text = strip_tags($html)
即可。然后$text
看起来像这样:
00:30
Headline News
00:31
Money Mind
01:00
Headline News
现在做这样的事情用空格替换所有其他换行:
$lines = explode('\n',$text);
$final_text = '';
for ($i=0;$i<count($lines);$i++) {
$final_text .= $lines[$i];
if ($i%2==0) {
$final_text .= ' ';
} else {
$final_text .='\n';
}
}
如果您拥有的HTML并不总是您所显示的格式,则必须使用SimpleXML或更复杂的DOM functions来解析HTML。
使用SimpleXML的示例如下:
$html = <<<EOF
<html>
<li><span class="li-time">00:30</span>
<span class="li-title">Headline News</span></li>
<li><span class="li-time">00:31</span>
<span class="li-title">Money Mind</span></li>
<li><span class="li-time">01:00</span>
<span class="li-title">Headline News</span></li>
<li><span class="li-time">01:01</span>
<span class="li-title">Singapore Tonight</span></li>
</html>
EOF;
$sx = simplexml_load_string($html);
$output_text = '';
foreach($sx->li as $list_item) {
$output_text .= $list_item->span[0] . " " . $list_item->span[1] . "\n";
}
echo $output_text;
请注意,$ html必须包含一些标记(我在示例中选择了<html></html>
)。