如何使用PHP解析这种HTML代码?
首先,我在这里找到了一些线索,例如,但这并不是我想要的 以下是我的文本示例:如何使用PHP解析这种HTML代码?,php,html-parsing,Php,Html Parsing,首先,我在这里找到了一些线索,例如,但这并不是我想要的 以下是我的文本示例: 一些文本bla bla bla bla日期:2012年12月13日 所需输出: 2012-12-13 Peter Novak books,cinema,facebook 我需要将此信息保存到数据库中,但我不知道如何在标记之间检测值(例如日期),然后立即检测值(在本例中为:2012-12-13) 我将非常感谢您在这方面的帮助,谢谢 如果日期,姓名,爱好和总是以这种方式存在,我建议您使用和 例如,要获取日期,请执行以下操
一些文本bla bla bla bla
日期:2012年12月13日
所需输出:
2012-12-13
Peter Novak
books,cinema,facebook
我需要将此信息保存到数据库中,但我不知道如何在
标记之间检测值(例如日期
),然后立即检测值(在本例中为:2012-12-13
)
我将非常感谢您在这方面的帮助,谢谢 如果日期
,姓名
,爱好
和
总是以这种方式存在,我建议您使用和
例如,要获取日期,请执行以下操作:
// Get start position, +13 because of "<b>Date</b>: "
$dateStartPos = strpos($yourText, "<b>Date</b>") + 13;
// Get end position, use dateStartPos as offset
$dateEndPos = strpos($yourText, "<br />", $dateStartPos);
// Cut out the date, the length is the end position minus the start position
$date = substr($yourText, $dateStartPos, ($dateEndPos - $dateStartPos));
//获取开始位置,+13,因为“日期:”
$dateStartPos=strpos($yourText,“Date”)+13;
//获取结束位置,使用dateStartPos作为偏移量
$dateEndPos=strpos($yourText,
,$dateStartPos);
//剪下日期,长度是结束位置减去开始位置
$date=substr($yourText,$dateStartPos,($dateEndPos-$dateStartPos));
由于没有太多的DOM可供遍历,因此DOM遍历工具对此无能为力
这应该起作用:
1) 删除b
标记之前的所有内容
2) 移除b
标签。DOM遍历工具可以做到这一点,但如果它们是纯文本,即使是正则表达式也可以做到,并且它可以在同一过程中删除冒号和后续空格:[^假设格式一致,则可以为您工作:
<?php
$text = "Some text bla bla bla bla<br /><b>Date</b>: 2012-12-13<br /><br /><b>Name</b>: Peter Novak<br /><b>Hobby</b>: books,cinema,facebook";
$tokenized = explode(': ', $text);
$tokenized[1] = explode("<br", $tokenized[1]);
$tokenized[2] = explode("<br", $tokenized[2]);
$tokenized[3] = explode("<br", $tokenized[3]);
$date = $tokenized[1][0];
$name = $tokenized[2][0];
$hobby = $tokenized[3][0];
echo $date;
echo $name;
echo $hobby;
?>
使用可以轻松实现这一点(就像jQuery一样)
然后
这将是一个混乱的过程,因为html没有语义。有没有其他方法来检索信息?Xml?您发布的html周围是否有父元素?
<?php
$text = "Some text bla bla bla bla<br /><b>Date</b>: 2012-12-13<br /><br /><b>Name</b>: Peter Novak<br /><b>Hobby</b>: books,cinema,facebook";
$tokenized = explode(': ', $text);
$tokenized[1] = explode("<br", $tokenized[1]);
$tokenized[2] = explode("<br", $tokenized[2]);
$tokenized[3] = explode("<br", $tokenized[3]);
$date = $tokenized[1][0];
$name = $tokenized[2][0];
$hobby = $tokenized[3][0];
echo $date;
echo $name;
echo $hobby;
?>
include('simple_html_dom.php');
$html = str_get_html('Some text bla bla bla bla<br /><b>Date</b>: 2012-12-13<br /><br /><b>Name</b>: Peter Novak<br /><b>Hobby</b>: books,cinema,facebook');
$html = file_get_html('http://your_page.com/');
foreach($html->find('text') as $t){
if(substr($t, 0, 1)==':')
{
// do whatever you want
echo substr($t, 1).'<br />';
}
}
2012-12-13
Peter Novak
books,cinema,facebook