Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]funkcja -> problem z number_format
Forum PHP.pl > Forum > Przedszkole
agataperz
Witam,

mam problem otóż kiedyś prosiłam kogoś o napisanie pewnego skryptu.
Dziś ten skrypt zaczął robić błędy - nie zapisuje cen powyżej 1000 zł
Owa funkcja skanuje ceny z witryny i zapisuje je do bazy.
Strona która jest skanowana ma zapisane ceny namber_format($liczba, 2 ',' , ' ')
Gdy tylko pojawi się np cena: 1 234,56 zapisuje ją jako 1.
Możecie mi pomóc poprawić ten skrypt?
  1. public function getProductDetail($html, $info, $request) {
  2. $dom = @DOMDocument::loadHTML($html);
  3. $xpath = new DOMXPath($dom);
  4.  
  5. $product = array();
  6.  
  7. $code = trim((string) $xpath->evaluate("//div[@id='st_product-show_success_frame_info']//ul[1]/li[2]/text()")->item(0)->nodeValue);
  8.  
  9. $product['code'] = $code;
  10. // $product['url'] = trim($url);
  11. $product['name'] = trim($xpath->evaluate("//div[@id='st_product-show_success_frame_info']//ul[1]/li[1]/h1")->item(0)->nodeValue);
  12. $product['category'] = trim($xpath->evaluate("//div[@id='st_product-show_success_frame_info']//ul[1]/li[3]/text()")->item(0)->nodeValue);
  13. $product['short_desc'] = trim($xpath->evaluate("//div[@id='st_product-show_success_short_description']")->item(0)->nodeValue);
  14.  
  15. //save info as html content
  16. $domInfo = new DOMDocument();
  17. $node = $xpath->evaluate("//div[@id='st_application-st_product-product_description']")->item(0);
  18. $domInfo->appendChild($domInfo->importNode($node, true));
  19. $name5_html = $domInfo->saveHTML();
  20.  
  21. $charAt = stripos($name5_html,'>');
  22. $name5_html = substr($name5_html, $charAt + 1, strlen($name5_html));
  23. $name5_html = substr($name5_html, 0, strlen($name5_html) - 6);
  24. $product['html_desc'] = $name5_html;
  25.  
  26. $product['price'] = 0;
  27. $name6 = $xpath->evaluate("//span[@id='st_product_options-price-brutto']");
  28. if($name6->length) {
  29. list($price, $garbage) = explode(' ', trim($name6->item(0)->nodeValue), 2);
  30. $product['price'] = str_replace(',', '.', $price);
  31. }
  32. }

Próbowałam wstawić w kilku miejscach
  1. $product['price'] = str_replace(' ', '', $price);

i niestety nie daje to pożądanego efektu.
Damonsson
str_replace powinno zadziałać, może gdzieś nadpisujesz znowu $product['price'] ?
_Borys_
Ostatnia funkcja explode() robi sieczkę ponieważ spację w cenie traktuje jako rozdzielenie.
agataperz
właśnie też się tego domyśliłam że explode() robi bigos
tylko jak rozwiązać ten problem gdyż explode() musi zostać żeby oddzielić cenę od reszty np. zł
jeżeli zlikwiduje str_replace spację to dodają mi się oprócz ceny inne śmieci i cena nie zapisuje mi sie w decimal(8,2)
albo jeżeli zrobie:
  1. if($name6->length) {
  2. list($price, $garbage) = explode(' ', trim($name6->item(0)->nodeValue), 2);
  3. $price = str_replace(' ', '', $price);
  4. $product['price'] = str_replace(',', '.', $price);
  5. }

tez nie dziala.

sprawdzalam caly skrypt to tylko tutaj w tej funkcji jest użyta zmienna $produkt['prince'] oprócz miejsca zapisania do bazy danch
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.