2011-11-24 99 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

相关问题