1

これを見てくれてありがとう。PHP スクリプトを使用して URL からページのソース コードを取得し、それを解析して特定の部分のテキストを表示しようとしています。問題は、リンクのソースを取得したときのようです(次の場合:

$data = file_get_contents($link);

) 変数 $data は、単なる文字列としてではなく HTML として格納します。私は PHP にかなり慣れていないので、そうであるかどうかは 10% わかりませんが、$data を何らかの方法で表示しようとすると、プレーン テキストではなく、HTML 形式の HTML として表示されることはわかっています。

通常、これは問題になりませんが、次のように、HTML タグ内の何かの値を取得しようとしています。

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

また、プレーン テキストではなく HTML として保存されているか、そのように処理されているため、strpos() は、ページを読み込んだ場合に表示されるテキストのみを検索します。

より具体的に言うと、私のファイル (私のアカウントに関する YouTube データ) では、HTML としてロードされた場合に表示されるものだけを調べますが、これはまったくナンセンスです。

検索するソースは次のとおりです (プライバシーのために、アカウント名を「MyAccount」に置き換えました)。

<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>

検索対象/アクセス対象は次のとおりです。

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

どんな助けでも大歓迎です!!

4

1 に答える 1

0

これを試して、

    $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 を読み取り可能にします。

于 2012-11-17T20:19:59.657 に答える