Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenie regularne i zamiana spacji
Forum PHP.pl > Forum > Przedszkole
-adios-
Witam wszytskich mam taki problem mianowicie mam taki kod:

  1.  
  2. preg_match_all('#<div class="remes">\s*Znaleziono:\s(.+?)\s*wyników dla\s*<h1>#', $resp, $strok);
  3.  
  4.  
  5.  
  6. print_r ($strok);
  7.  
  8. $str = str_replace(array(' '), array(''), $strok[1][0]);
  9.  
  10. print_r ($str);
  11.  
  12.  
  13.  



I załóżmy mam liczbę '1 604' i teraz $strok ma zawartość:
  1. [1] => Array
  2. (
  3. [0] => 1 604
  4. )

czyli zmienna nowa $str i chce zamienić liczbę aby nie było w niej spacji... czyli wynik ma być '1604' a jest ciągle '1 604'. Albo ja jakiś błąd popełniam nie wiem zgłupiałem do reszty już...
Czy ktoś wie co to może być tam jest jedna spacja do zlikwidowania z którą nie mogę obie dać rady... ;/
com
http://ideone.com/wFjto5
-adios-
To ja wiem z palca działa jak się wpisze a jak np. ze strony pobrać... to dupa blada...


Znaleziono: 16 042 wyników dla ubezpieczenia - Polska


  1. <?php
  2. $site = ('http://www.pkt.pl/ubezpieczenia/4-1/');
  3.  
  4.  
  5. $opti = array('http' => array('user_agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0'));
  6. $cont = stream_context_create($opti);
  7. $resp = file_get_contents($site, false, $cont);
  8.  
  9. preg_match_all('#<div class="remes">\s*Znaleziono:\s(.+?)\s*wyników dla\s*<h1>#', $resp, $strok);
  10.  
  11.  
  12. $str = str_replace(' ' ,'', $strok[1][0]);
  13.  
  14. echo ($str);
  15.  
  16. ?>


Wynik 16 042 zamiast 16042
com
http://ideone.com/icNebJ wink.gif
c4ash
A moze przepusc przez to:
number_format

-adios-

Ni cholery nie wiem kurde noga odpaliłem inną stronę np. panorame firm, onet, gazeta etc. kowertuje w locie a tutaj ni cholery nie chce usunąć mi tego białego znaku ;/...
-adios-
I teraz zagadka:

Nie działa:
  1. preg_match_all('#<div class="remes">\s*Znaleziono:\s([0-9]{2}+)/\s/ms([0-9]{3}+)\s*wyników dla\s*<h1>#Usi', $resp, $strok);


Nie działa
  1. preg_match_all('#<div class="remes">\s*Znaleziono:\s([0-9]{2}+)\s*([0-9]{3}+)\s*wyników dla\s*<h1>#Usi', $resp, $strok);


Nie działa:
  1. preg_match_all('#<div class="remes">\s*Znaleziono:\s([0-9]{2}+)\s([0-9]{3}+)\s*wyników dla\s*<h1>#Usi', $resp, $strok);


Działa:
  1. preg_match_all('#<div class="remes">\s*Znaleziono:\s([0-9]{2}+).*([0-9]{3}+)\s*wyników dla\s*<h1>#Usi', $resp, $strok);


Rezultat:
  1. [1] => Array
  2. (
  3. [0] => 16
  4. )
  5.  
  6. [2] => Array
  7. (
  8. [0] => 042
  9. )


Pytanie moje jest takie jaki jest znak jest między liczbami 16 a 042?? że nie potrafię go zlikwidować questionmark.gif? bo ja tam widzę spację w kodzie źródłowym...:

  1. <div class="remes">
  2. Znaleziono: 16 042
  3. wyników dla
  4. <h1>
com
twarda spacja smile.gif czyli &nbsp ; wink.gif

http://ideone.com/52piUL
-adios-
Cytat(com @ 17.02.2014, 19:31:49 ) *
twarda spacja smile.gif czyli &nbsp ; wink.gif

http://ideone.com/52piUL



To nie to... zobacz wyżej masz kod html ze strony tam nie twardej spacji...
com
no przecież pobierasz to stąd http://www.pkt.pl/ubezpieczenia/4-1/ .. no to skoro tam jest to tu też twardej spacji tak nie zobaczysz wink.gif
-adios-
Cytat(com @ 17.02.2014, 19:45:02 ) *
no przecież pobierasz to stąd http://www.pkt.pl/ubezpieczenia/4-1/ .. no to skoro tam jest to tu też twardej spacji tak nie zobaczysz wink.gif



Ale i tak nie działa ;/
-adios-
Dzięki @dzek69 z innego forum:
problem z kodowaniem wielobajtowym


  1. $l = $strok[1][0];
  2. $str = preg_replace('@\s@u', '', $l);
  3. echo ($str);


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.