Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP解析这种HTML代码?_Php_Html Parsing - Fatal编程技术网

如何使用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