Php 抓取标签之间的信息
我有一个文本文件,其中的数据被包装在标记之间。这些标签是:Php 抓取标签之间的信息,php,mysql,html,perl,text-files,Php,Mysql,Html,Perl,Text Files,我有一个文本文件,其中的数据被包装在标记之间。这些标签是: <title> <url> <pubDate> 为什么在PHP5中使用“”而不仅仅是“为什么使用“”而不仅仅是“或SimpleXML” @rascher将XML实体转换为“XML文本”应该不会有任何问题 将被编码为: < title &gt; C > Java < /title > 解码XML实体将生成有效的XML。或PHP5
<title>
<url>
<pubDate>
为什么在PHP5中使用“
”而不仅仅是“为什么使用“
”而不仅仅是“或SimpleXML”
@rascher将XML实体转换为“XML文本”应该不会有任何问题
将被编码为:
< title &gt; C > Java < /title >
解码XML实体将生成有效的XML。或PHP5中的SimpleXML
#!/usr/bin/perl
use strict;
use warnings;
my %seen = ();
sub seen_all {
defined $seen{title}
&& defined $seen{url}
&& defined $seen{pubDate};
}
while (<>) {
/<(.+?)>(.+)<\/\1>/ && do {
$seen{$1} = $2;
};
if(seen_all){
print "insert into table (title,url,pubdate) " .
"values ('$seen{title}','$seen{url}','$seen{pubDate}')\n";
%seen = ();
}
}
@rascher将XML实体转换为“XML文本”应该不会有任何问题
将被编码为:
< title &gt; C > Java < /title >
解码XML实体将生成有效的XML。#/usr/bin/perl
#!/usr/bin/perl
use strict;
use warnings;
my %seen = ();
sub seen_all {
defined $seen{title}
&& defined $seen{url}
&& defined $seen{pubDate};
}
while (<>) {
/<(.+?)>(.+)<\/\1>/ && do {
$seen{$1} = $2;
};
if(seen_all){
print "insert into table (title,url,pubdate) " .
"values ('$seen{title}','$seen{url}','$seen{pubDate}')\n";
%seen = ();
}
}
严格使用;
使用警告;
我的%SEED=();
sub seen_all{
已定义$seen{title}
&&已定义$seen{url}
&&定义$seen{pubDate};
}
而{
/(.+)/&&do{
$SEED{$1}=$2;
};
如果(全部看到){
打印“插入表格(标题、url、发布日期)”。
“值('$seen{title}','$seen{url}','$seen{pubDate}')\n”;
%seed=();
}
}
#/usr/bin/perl
严格使用;
使用警告;
我的%SEED=();
sub seen_all{
已定义$seen{title}
&&已定义$seen{url}
&&定义$seen{pubDate};
}
而{
/(.+)/&&do{
$SEED{$1}=$2;
};
如果(全部看到){
打印“插入表格(标题、url、发布日期)”。
“值('$seen{title}','$seen{url}','$seen{pubDate}')\n”;
%seed=();
}
}
您可能想看看。它有一个函数“extract_tagged”(提取标记),可以准确地解决您概述的问题。您可能想看看。它有一个函数“extract_tagged”(提取标记),可以准确地解决您概述的问题。您可以使用此函数。您可以使用简单的XML类读取RSS
$data = file_get_contents('http://www.example.com/path-to-feed.xml');
$xml = new SimpleXMLElement($data);
foreach($xml->feed as $feed){
echo $feed->title;
echo '<br />';
echo $feed->url;
echo '<br />';
echo $feed->pubDate;
echo '<br />';
}
$data=file\u get\u contents('http://www.example.com/path-to-feed.xml');
$xml=新的simplexmlement($data);
foreach($xml->feed as$feed){
echo$feed->title;
回声“
”;
echo$feed->url;
回声“
”;
echo$feed->pubDate;
回声“
”;
}
您可以使用这个。您可以使用简单的XML类读取RSS
$data = file_get_contents('http://www.example.com/path-to-feed.xml');
$xml = new SimpleXMLElement($data);
foreach($xml->feed as $feed){
echo $feed->title;
echo '<br />';
echo $feed->url;
echo '<br />';
echo $feed->pubDate;
echo '<br />';
}
$data=file\u get\u contents('http://www.example.com/path-to-feed.xml');
$xml=新的simplexmlement($data);
foreach($xml->feed as$feed){
echo$feed->title;
回声“
”;
echo$feed->url;
回声“
”;
echo$feed->pubDate;
回声“
”;
}
因此,使用XML或HTML解析器遍历它,并提取内容。我在这里遗漏了什么?当你在文本编辑器或其他地方查看数据时,是字符串“”存在,还是实际的“@dsm-你确定他的数据实际上与他键入的数据不一样吗?@Telemachus-看起来太像一个错误了……也许作者可以澄清一下(@Sunny Rockzzs-意见?)实际上,记事本上显示的数据与XML编辑器上显示的数据相对应,比如记事本++与DSM上面编辑的版本相对应,所以请使用XML或HTML解析器遍历它,并提取内容。我在这里缺少什么?当您在文本编辑器或其他东西中查看数据时,字符串“”是否存在,还是实际存在@dsm-你确定他的数据实际上与他键入的数据不一样吗?@Telemachus-看起来太像一个错误了。。。也许作者可以澄清(@Sunny Rockzzs-opinion?)事实上,记事本上看到的数据与XML编辑器上看到的数据相对应,比如记事本++与DSM上面编辑的版本相对应,可能会更复杂一些:如果数据应该是“C Java”,但在他的数据中显示为“< title> C Java</title>”,该怎么办 ? 它会错误地替换中间的“& GT”。这可能会更复杂一些:如果数据应该是“C java”,但在他的数据中显示为“& lt标题& GT java & lt/Tead & Gt”,该怎么办?它会错误地取代中间的“GT”。