2014-08-28 43 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

相關問題