0

cURL を使用して動的ページを取得しています。このページの情報を使用して配列を作成するために、いくつかの異なる方法を試しました。

2 つの HTML タグ (他のタグにネストされている) の間のユーザー名から配列を作成する必要があります。ユーザー名には他の一般的な文字も含まれている場合があります。現在使用している方法は機能しますが、多くの迷子の文字が含まれています。

ページ出力 HTML の例はすぐ下にあります (ここで空白や改行を考慮する必要があるかどうかはわかりません)。この動的なページで変更されるのは、ユーザー名の数とフォント タグだけです。

 <html>
 <head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body topmargin="0" marginheight="0" leftmargin="0" marginwidth="0" bgcolor="#ffffff">
    <font face="Verdana" size=2>
 <font color="#0000ff">User One</font>, <font color="#000000">User Two</font>, <font color="#000000">User Three</font>
 </font>
 </body>
 </html>

上記の例では、ユーザー名 (つまり、'font' タグの間の名前) が必要です。結果を配列に入れたいと思います。これにより、「foreach」ループを使用してユーザー名を反復処理し、関連する「id」を見つけることができます。

フォントタグを含めるために正規表現を使用することを見てきました。また、すべての html タグ ('preg_split') の cURL の出力を削除することも検討しました。

私のコードは以下です(匿名):

header("Content-type: text/plain");

$pvars = array('id' => '123456', 'subroom' => '0', 'style' => '3', 'comma' => '0', 'countonly' => '0');
$timeout = 10;
$myurl = "http://stackoverflow.com/online.pl";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $myurl);
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_POST, 0);
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$xml = curl_exec($curl);

$arr = preg_split("/\[.*?]|<.*?>/", $xml);

foreach($arr as $line)
{
$query  = $db->simple_select("users", "uid", "username = '" . $db->escape_string($line) . "'");
$user = $db->fetch_array($query);
$i = $user['uid'];
echo $i."\n";
}

curl_close ($curl);

これは意図したとおりに機能しません。代わりに、出力することを選択した改行は複数を返します。これは、「$i」の値が存在しないことを明確に示しています。

理想的には、foreach ループに到達する前に、ユーザー名を配列にしたいと考えています。

ありがとう。

4

0 に答える 0