2011-11-24 101 views
0

EDIT 2十進制數用逗號或點後,第一個數字

謝謝大家的幫助! 通過融合我設法解決這個問題的答案以及其他一些論壇帖子:

$string = strip_tags($oNode['div.item-prijs']); 
$array = str_split($string,1); 
$arraytotal = ($array[0] . ',' . $array[1] . $array[2]); 
echo $arraytotal; 

,並顯示現在正確的價格。 「7,49」我自動將PHP腳本轉換爲。

對不起,我不能給更多的問題回答標記。案件結案。

來吧傢伙

$price = strip_tags($oNode['div.item-prijs']); 
$new_price = substr(chunk_split($price, 1, ','), 0, -1); 
echo $new_price; 

這將呼應7,4,9,而不是7.49。但是這個代碼是迄今爲止最好的代碼。 有人有任何想法如何解決這個問題?

嗯,我被困在這,現在一會兒..

我從一個網站分析數據,我想要得到的價格,但在網站上有價格之間沒有逗號或點。因此,它顯示像499,4是大於99

當我這樣做:

$price = $oNode['div.item-prijs']; 
echo $price; 

它會響應499 我希望它4和99

之間添加逗號或點

我已經試過:

$price = $oNode['div.item-prijs']; 
$new_price = substr(chunk_split($price, 1, ','), 0, -1); 
echo $new_string; 

這將呼應:

<,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,7,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,4,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,0,<,s,u,p,>,6,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,3,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,3,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,3,<,s,u,p,>,6,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,1,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,8,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,2,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,0,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,2,<,s,u,p,>,2,5,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,0,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,5,4,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,2,<,s,u,p,>,0,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,7,8,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,7,1,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,0,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,2,<,s,u,p,>,0,8,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,1,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,3,<,s,u,p,>,4,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,6,<,s,u,p,>,1,8,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,3,<,s,u,p,>,9,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,4,<,s,u,p,>,2,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,><,d,i,v, ,c,l,a,s,s,=,",i,t,e,m,-,p,r,i,j,s,",>,<,p,>,2,<,s,u,p,>,7,9,<,/,s,u,p,>,<,/,p,>,<,/,d,i,v,> 

這:

$string = $oNode['div.item-prijs']; 
    $new_string = substr(chunk_split($string, 4, ','), 0, -1); 
    echo $new_string; 

這將呼應:

, 
7,49<,/sup,>, 

<,/p><,/div,>, 

4,99<,/sup,>, 

1,49<,/sup,>, 

0,69<,/sup,>, 

1,99<,/sup,>, 

1,49<,/sup,>, 

1,49<,/sup,>, 

3,49<,/sup,>, 

3,49<,/sup,>, 

3,69<,/sup,>, 

1,19<,/sup,>, 

1,89<,/sup,>, 

1,99<,/sup,>, 

1,99<,/sup,>, 

1,49<,/sup,>, 

2,99<,/sup,>, 

1,99<,/sup,>, 

1,09<,/sup,>, 

2,25<,/sup,>, 

1,99<,/sup,>, 

0,99<,/sup,>, 

1,54<,/sup,>, 

2,09<,/sup,>, 

1,78<,/sup,>, 

1,71<,/sup,>, 

0,99<,/sup,>, 

1,49<,/sup,>, 

2,08<,/sup,>, 

1,49<,/sup,>, 

3,49<,/sup,>, 

6,18<,/sup,>, 

3,99<,/sup,>, 

4,29<,/sup,>, 

2,79<,/sup,> 

因此,將蟹每個頁面上的價格,同時也呼應的HTML代碼。它拆分了html代碼而不是價格。

下面是該網站

<div class="item-prijs"> 
     <p> 
      <cufon class="cufon cufon-canvas" alt="4" style="width: 27px; height: 42px; "> 
       <canvas width="47" height="43" style="width: 47px; height: 43px; top: -1px; left: -2px; "></canvas> 
       <cufontext>4</cufontext> 
      </cufon> 
      <sup> 
       <cufon class="cufon cufon-canvas" alt="99" style="width: 24px; height: 20px; "> 
        <canvas width="35" height="21" style="width: 35px; height: 21px; top: -1px; left: -1px; "> 
        </canvas><cufontext>99</cufontext> 
       </cufon> 
      </sup> 
     </p> 
    </div> 

我在做什麼錯上的HTML代碼?我嘗試過不同的方式,但沒有成功。有人可以幫助我用正確的代碼嗎?

感謝

+0

看看:http://www.php.net/manual/en/function.money-format.php – Flukey

+0

這個數字也被稱爲美分,如果你除以100,你可以從中得到美元 – Esailija

+0

你正在使用哪個分析器? – zrvan

回答

2

試試這個,添加strip_tags它刪除任何HTML標籤:

$price = strip_tags($oNode['div.item-prijs']); 
$new_price = substr(chunk_split($price, 1, ','), 0, -1); 
echo $new_string; 
+0

這將回顯: 7,4,94,9,91,4,90,6,91,9,91,4,91,4,93,4, 93,4,93,6,91,1,91,8,91,9,91,9,91,4,92,9,91,9,91,0,92,2,51,9,90, 9,91,5,42,0,91,7,81,7,10,9,91,4,92,0,81,4,93,4,96,1,83,9,94,2, 92,7,9 所以逗號並不在正確的地方第一個eq :7,49不是7,4,9 – MOTIVECODEX

+0

我編輯了我的帖子(第一部分) – MOTIVECODEX

+0

TY strip_tags解決了我問題的一部分:) – MOTIVECODEX

5

不管發生的簡單的解決方案?

$major = intval($price/100); 
$minor = intval($price) % 100; 

echo "The price is $major.$minor.\n"; 

甚至:

echo "The price is " . ($price/100) ".\n"; 

(如果你是快樂的默認格式浮動)

+0

這會回聲: 價格是0.7 。價格是0.0。價格是0.4。價格是0.1。價格是0.0。價格是0.1。價格是0.1。價格是0.1。價格是0.3。價格是0.3。價格是0.3。價格是0.1。價格是0.1。價格是0.1。價格是0.1。價格是0.1。 不解析它的權利。首先價格必須是7,49而不是0.7。 – MOTIVECODEX

+0

這個問題並不是真正將499(我假設爲4.99歐元)轉換爲明智的格式,而是從HTML節點中提取正確的數據。 – zrvan

+0

@zrvan:OP說'echo $ price;'產生'499',但是...這有點不清楚。 F4LLCON:你能否簡單描述一下你的輸入是什麼樣的,以及你想要輸出什麼? –

1

也許這將解決你的問題。

$price = $oNode['div.item-prijs']; 
$new_price = substr(chunk_split($price, 1, ','), 0, -1); 
echo $new_price; // not $new_string; I think $new_string is an other var in your code 

但您還可以在代碼中解析您的<sup>標記。

請您試試;

$preg='#<div class="item-prijs"><p>(.*?)<sup>(.*?)</sup></p></div>#si'; 
preg_match_all($preg,$new_string,$number,PREG_SET_ORDER); 

$數[0]是多個以逗號之前的陣列

$號碼[1]是數後逗號

也許這有助於陣列;

$string = $oNode['div.item-prijs']; 
$new_string = substr(chunk_split($string, 4, ','), 0, -1); 
echo str_replace("<,/sup,>,", "", $new_string); 
+0

哦,是的,是的,謝謝,但是這並沒有解決我的問題。 – MOTIVECODEX

+0

我更新了答案,也許它對你有幫助? –

+0

我無法設法讓它工作...... – MOTIVECODEX

1

如果我理解正確的問題,你可以剝去標籤,乘以10的價格,然後用number_format。之後,你只需要去掉最後一位數字。

php -r 'echo substr(number_format((499*10)), 0, -1);' => 4,99 
php -r 'echo substr(number_format((599*10)), 0, -1);' => 5,99 
php -r 'echo substr(number_format((5099*10)), 0, -1);' => 50,99 
+0

這給了我一個語法錯誤 – MOTIVECODEX

+0

我編輯了我的文章(第一部分) – MOTIVECODEX

2

由於它是phpQuery你可以使用:

echo trim ($oNode['div.item-prijs']->text()); 

要獲取的實際數據的後。

但是這可能是更接近你以後:

$price = array(); 
foreach ($oNode['div.item-prijs cufontext'] as $n) 
{ 
     $price[] = (int)pq ($n)->text(); 
} 

這將產生一個陣列 - 在這種情況下 - 兩個元素,4和99

UPDATE

要打印的價格的方式,你想要的,使用:

echo $price[0] . '.' . $price[1]; 

更新2

的phpQuery選擇也許應該是這個樣子:

foreach (pq ($oNode)->find ('div.item-prijs') as $price_node) 
{ 
    // we're iterating each <div /> class 'item-prijs'. 
    $price = array(); 
    foreach (pq ($price_node)->find ('cufontext') as $pn) 
    { 
     // iterate each <cufontext /> child node to div.item-prijs 
     $price[] = (int)pq ($n)->text(); 
    } 

    // we could add $price to an array or something, but we'll just echo for now. 
    echo $price[0] . '.' . $price[1] . "\n"; 
} 

這將遍歷每個div.item-prijs並提取價格到一個數組,$價格。

+0

'$ price = array(); \t \t的foreach($ oNode [ 'div.item-prijs']爲$ N) \t \t { \t \t $價格[] =(int)的PQ($ n)的 - >文本(); \t \t} \t \t echo $ price [0]。 '' 。 $ price [1];' 它會回顯: '749.0.499.149.69.199.149.149.349.349.369.119.189.199.199.149.299.199.109.225.199.99.154.209.178.171.99.149.208.149.349.618.399.429.279 。# – MOTIVECODEX

+0

@ F4LLCON:檢查更新。 – zrvan

+0

我編輯了我的帖子(第一部分) – MOTIVECODEX

相關問題