Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] preg_match_all
servs
post 13.12.2011, 16:59:33
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 18.11.2006
Skąd: gorzów

Ostrzeżenie: (0%)
-----


Panowie, mam taki problem,

Jest sobie taki ciąg znaków
  1. <div class="cena">
  2. 1 664,80
  3. </div>
  4. <div class="cena Waluta">USD/uncja</div>

I mielę to php tak, żeby wyciągnąć do zmiennej 1 664,80.

  1. preg_match_all('#<div class="cena">(.*)</div>#', $res, $file);
  2.  
  3. print_r($file);


Niestety z wynikiem
Cytat
Array ( [0] => Array ( ) [1] => Array ( ) )


Czy ktoś ma pomysł na taki problem?
Pozdrawiam.
Go to the top of the page
+Quote Post
timon27
post 13.12.2011, 17:09:31
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Wyszedł ci prawdopodobnie prawidłowy wynik, tylko zapisany w formie tabeli (dwuwymiarowej).
Właściwy wynik chyba w [0][1]
Przeczytaj dokładnie o wyniku tej funkcji w manualu.

Ten post edytował timon27 13.12.2011, 17:10:27
Go to the top of the page
+Quote Post
servs
post 13.12.2011, 17:19:08
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 18.11.2006
Skąd: gorzów

Ostrzeżenie: (0%)
-----


Przeszukałem wszystko i wszystko jest puste.
  1. for($a=0;$a<10;$a++){
  2. for($b=0;$b<10;$b++){
  3. if(!empty($file[$a][$b])){
  4. echo $a.', '.$b;
  5. }
  6. }
  7. }
Go to the top of the page
+Quote Post
timon27
post 13.12.2011, 17:48:01
Post #4





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Faktycznie. z testów wynika, zę podwójny znak " jest jakimś problemem.
Ale nie wiem dlaczego.
Skróć:
<div class="cena">
do:
<div class="cena
a potem utnij dwa znaki i po problemie
Go to the top of the page
+Quote Post
servs
post 13.12.2011, 18:37:13
Post #5





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 18.11.2006
Skąd: gorzów

Ostrzeżenie: (0%)
-----


Całym problemem jest to, że ma to postać taką:
  1. <div class="cena">
  2. 1 664,80
  3. </div>


Jak doprowadzić to do takiej postaci? Ewentualnie są jakieś wyrażenia regularne, które widzą entery?
  1. <div class="cena">1 664,80</div>


Ten post edytował servs 13.12.2011, 18:37:45
Go to the top of the page
+Quote Post
redeemer
post 13.12.2011, 18:48:07
Post #6





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


Sprawdź tak
  1. preg_match_all('#<div class="cena">(.*)</div>#s', $res, $file);


--------------------
Go to the top of the page
+Quote Post
servs
post 13.12.2011, 19:00:37
Post #7





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 18.11.2006
Skąd: gorzów

Ostrzeżenie: (0%)
-----


Działa.
Co zmieniają hashe i "s"?
Go to the top of the page
+Quote Post
redeemer
post 13.12.2011, 19:04:19
Post #8





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


Hashe to tylko znaki początku i końca wyrażenia, skopiowałem je zresztą z Twojego posta.
Co do s: http://php.net/manual/en/reference.pcre.pa...n.modifiers.php


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 17:16