首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空数组(不为空)

问空数组(不为空)
EN

Stack Overflow用户
提问于 2012-12-10 00:58:59
回答 2查看 106关注 0票数 0
代码语言:javascript
复制
while($row = mysql_fetch_row($result)){
        preg_match('#<span id="lblNumerZgloszenia" style="font-weight:bold;font-style:italic;">([^<]*)<\/span>#',$row[1],$matches);
        $query2 = 'UPDATE content_pl SET kategoria_data='.$matches[1].' WHERE id='.$row[0].';';
        mysql_query($query2);
    }

我执行这个preg_match是为了将span内容放到$matches数组中。当我执行print_r($matches)时,它会显示正确的结果,但当我使用$matches[1]时,它的浏览器告诉我没有这样的索引。

编辑:print_r节目

代码语言:javascript
复制
[...]Array ( [0] => TOW:   (210) 252250, (220) 01-07-2002 [1] => TOW:   (210) 252250, (220) 01-07-2002 ) Array ( [0] => TOW:   (210) 252251, (220) 01-07-2002 [1] => TOW:   (210) 252251, (220) 01-07-2002 ) Array ( [0] => TOW:   (210) 252252, (220) 01-07-2002 [1] => TOW:   (210) 252252, (220) 01-07-2002 ) Array ( [0] => TOW:   (210) 252253, (220) 01-07-2002 [1] => TOW:   (210) 252253, (220) 01-07-2002 )[...]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-10 01:07:07

这是在一个while循环中完成的,这意味着它可能会不止一次发生。如果你只是print_r($matches); exit;,你可能会注意到你得到了你想要的东西,但这只是你循环的一次迭代。

最有可能的是,至少有一种情况下您找不到任何匹配项。你应该用一个检查preg_match调用返回值的if语句来包装你的第二个mysql_query (它已经过时了,顺便说一句,如果你的项目很小,你可能想切换到PDO )。仅当preg_match返回>0时才运行查询

票数 3
EN

Stack Overflow用户

发布于 2012-12-10 01:09:20

让我向您展示一种比parsing HTML with regex更好的方法。Here is convenient library为您执行解析。这样代码就变得非常简单(并且可读):

代码语言:javascript
复制
$html = new simple_html_dom();
$html->load($row[1]);

$span = $html->find('span[id=lblNumerZgloszenia]', 0);
$data = $span->innertext;

$query2 = 'UPDATE content_pl SET kategoria_data='.$data.' WHERE id='.$row[0].';';

如果由于某种原因不能使用第三方库,您可以使用built-in DOM module执行类似的操作。它将不会很优雅,但仍然更健壮和可读性更强。

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

https://stackoverflow.com/questions/13789531

复制
相关文章

相似问题

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