首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP解析HTML字符串

PHP解析HTML字符串
EN

Stack Overflow用户
提问于 2012-11-18 04:04:35
回答 1查看 279关注 0票数 1

感谢你花时间看这篇文章。我使用PHP脚本从URL获取页面的源代码,然后尝试解析它并显示某个部分文本。问题似乎是,当我获得链接的源代码时(使用:

代码语言:javascript
复制
$data = file_get_contents($link);

)变量$data将其存储为超文本标记语言,而不仅仅是字符串。我对PHP是个新手,所以我不太确定是不是这样,但我知道,如果我尝试以任何方式显示$data,它不会显示为纯文本,而是显示为带有HTML格式的超文本。

通常情况下,这不是问题,但我正在尝试获取HTML标记内的值,如下所示:

代码语言:javascript
复制
$search = strpos($data, $searchterm);

因为它要么被存储为HTML而不是纯文本,要么被以这种方式处理,因此strpos()将只搜索我加载页面时显示的文本。

更具体地说,在我的文件(关于我的帐户的YouTube数据)中,它只会查看加载为HTML时显示的内容,这纯粹是胡说八道。

这是我想让它搜索的来源(出于隐私考虑,我将我的帐户名替换为'MyAccount‘):

代码语言:javascript
复制
<entry gd:etag="W/"A0MFR347eCp7I2A9WhNQEU4."" xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:yt="http://gdata.youtube.com/schemas/2007">
<id>tag:youtube.com,2008:user:A1RDBCYeYWY9dydB9MmPlg</id>
<published>2007-01-23T15:39:30.000Z</published>
<updated>2012-11-17T08:03:36.000Z</updated>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://gdata.youtube.com/schemas/2007#userProfile"/>
<title>MyAccount</title>
<summary/>
<link rel="alternate" type="text/html" href="http://www.youtube.com/channel/UCA1RDBCYeYWY9dydB9MmPlg"/>
<link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/users/A1RDBCYeYWY9dydB9MmPlg?v=2"/>
<author>
<name>MyAccount</name>
<uri>http://gdata.youtube.com/feeds/api/users/MyAccount</uri>
<yt:userId>A1RDBCYeYWY9dydB9MmPlg</yt:userId>
</author>
<yt:channelId>UCA1RDBCYeYWY9dydB9MmPlg</yt:channelId>
<gd:feedLink rel="http://gdata.youtube.com/schemas/2007#user.liveevent" href="http://gdata.youtube.com/feeds/api/users/MyAccount/live/events?v=2" countHint="0"/>
<gd:feedLink rel="http://gdata.youtube.com/schemas/2007#user.favorites" href="http://gdata.youtube.com/feeds/api/users/MyAccount/favorites?v=2" countHint="0"/>
<gd:feedLink rel="http://gdata.youtube.com/schemas/2007#user.contacts" href="http://gdata.youtube.com/feeds/api/users/MyAccount/contacts?v=2" countHint="71"/>
<gd:feedLink rel="http://gdata.youtube.com/schemas/2007#user.inbox" href="http://gdata.youtube.com/feeds/api/users/MyAccount/inbox?v=2"/>
<gd:feedLink rel="http://gdata.youtube.com/schemas/2007#user.playlists" href="http://gdata.youtube.com/feeds/api/users/MyAccount/playlists?v=2"/>
<gd:feedLink rel="http://gdata.youtube.com/schemas/2007#user.subscriptions" href="http://gdata.youtube.com/feeds/api/users/MyAccount/subscriptions?v=2" countHint="54"/>
<gd:feedLink rel="http://gdata.youtube.com/schemas/2007#user.uploads" href="http://gdata.youtube.com/feeds/api/users/MyAccount/uploads?v=2" countHint="41"/>
<gd:feedLink rel="http://gdata.youtube.com/schemas/2007#user.newsubscriptionvideos" href="http://gdata.youtube.com/feeds/api/users/MyAccount/newsubscriptionvideos?v=2"/>
<yt:location>US</yt:location>
<yt:maxUploadDuration seconds="43200"/>
<yt:statistics lastWebAccess="2012-07-08T15:58:07.000Z" subscriberCount="126" videoWatchCount="0" viewCount="3385" totalUploadViews="50179"/>
<media:thumbnail url="http://i2.ytimg.com/i/A1RDBCYeYWY9dydB9MmPlg/1.jpg?v=934f35"/>
<yt:userId>A1RDBCYeYWY9dydB9MmPlg</yt:userId>
<yt:username display="MyAccount">MyAccount</yt:username>
</entry>

下面是它搜索/访问的内容:

代码语言:javascript
复制
tag:youtube.com,2008:user:A1RDBCYeYWY9dydB9MmPlg2007-01-23T15:39:30.000Z2012-11-17T08:03:36.000Z
MyAccounthttp://gdata.youtube.com/feeds/api/users/MyAccountA1RDBCYeYWY9dydB9MmPlgUCA1RDBCYeYWY9dydB9MmPlgUSA1RDBCYeYWY9dydB9MmPlgMyAccount

非常感谢您的任何帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-18 04:20:00

尝尝这个,

代码语言:javascript
复制
    $data = file_get_contents($link);
    $searchterm = ''; //as necessary

    $data = strtr($data,Array("<"=>"&lt;","&"=>"&amp;"));
    $searchterm = strtr($searchterm,Array("<"=>"&lt;","&"=>"&amp;"));

    $search = strpos($data, $searchterm);

中间的几行代码使PHP可以读取HTML以进行处理

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13434316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档