从html页面内容创建一个数组

时间:2013-09-02 22:12:37

标签: php html arrays curl

我正在使用cURL来获取动态页面。我尝试了几种不同的方法来创建一个包含此页面信息的数组。

我需要从两个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循环之前位于数组中。

感谢。

0 个答案:

没有答案