Php 抓取标签之间的信息

Php 抓取标签之间的信息,php,mysql,html,perl,text-files,Php,Mysql,Html,Perl,Text Files,我有一个文本文件,其中的数据被包装在标记之间。这些标签是: <title> <url> <pubDate> 为什么在PHP5中使用“”而不仅仅是“为什么使用“”而不仅仅是“或SimpleXML” @rascher将XML实体转换为“XML文本”应该不会有任何问题 将被编码为: &lt; title &amp;gt; C &gt; Java &lt; /title &gt; 解码XML实体将生成有效的XML。或PHP5

我有一个文本文件,其中的数据被包装在标记之间。这些标签是:

<title>
<url>
<pubDate>

为什么在PHP5中使用“
”而不仅仅是“
为什么使用“
”而不仅仅是“
或SimpleXML”

@rascher将XML实体转换为“XML文本”应该不会有任何问题

将被编码为:

&lt; title &amp;gt; C &gt; Java &lt; /title &gt;
解码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文本”应该不会有任何问题

将被编码为:

&lt; title &amp;gt; C &gt; Java &lt; /title &gt;
解码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”。