2014-08-28 59 views
0

我有一个PHP代码从网站检索值。我得到的输出也是一个通知: 注意:在在线遇到的非井形成数值19将整数转换为千位分隔符时遇到的格式不正确的数值

这是我的PHP代码:

<?php 
header('Content-Type: text/html; charset=utf-8'); 
$grep = new DoMDocument(); 
@$grep->loadHTMLFile("https://www.postme.com.my/men-1.html"); 

$finder = new DomXPath($grep); 
$class = "amount"; 

$nodes = $finder->query("//*[contains(@class, '$class')]"); 

$i = 0; 
    foreach ($nodes as $node) { 
    if ($i<1) { 
    $span = $node->childNodes; 
    $replace = str_replace("Items 1-12 of", "",$span->item(0)->nodeValue); 
    echo number_format($replace, 0 , '.' , ',') . '<br/>'; 
    } 
    $i++; 
    } 
?> 

如何纠正它,以便通知不会当我给它分配一个数字格式时出来。 谢谢!

+0

您是否在每次迭代时检查'$ replace'的内容,以查看在某个点上它是否不是数字? – Sugar 2014-08-28 05:46:23

+0

输出是整数..我已经用空白替换了所有的字符。 – Cael 2014-08-28 05:54:21

+0

明白了......我只是把$ convert =(int)$ replace; – Cael 2014-08-28 06:03:59

回答

2

您可以在命令前放置一个符号以忽略所有通知等。通常情况不好,但它应该起作用。

echo @number_format($replace, 0 , '.' , ',') . '<br/>'; 

编辑:@在错误的地方。

而且,有人建议,你也可以检查,以确保该值是数字:

http://php.net/manual/en/function.is-numeric.php

if(is_numeric($replace){ 
    echo number_format($replace, 0 , '.' , ',') . '<br/>'; 
} 

编辑编辑:您也可以尝试类型转换的变量,这里提到:

number_format() causes errors in Apache log

+0

不,请不要建议人们使用那个'@'操作符。隐瞒错误,警告和通知绝不是一个好主意......这是**方式**更好地了解问题是什么,然后正确处理。 – Sugar 2014-08-28 05:50:50

+1

@ClémentMalet我同意你的看法,为什么我提到它是不好的形式。我扩大了我的答案,包括is_numeric以帮助避免错误抑制。 – rmmoul 2014-08-28 05:53:53

相关问题