Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] preg_match_all, "łapanie" liczb do tablicy wyniku jako integer, a nie string
kreatiff
post 18.01.2014, 20:28:20
Post #1





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


  1. $txt = '80 plus 20 minus';
  2. preg_match_all('#\d+|plus#', $txt, $wynik);
  3.  
  4. echo'<pre>'. var_dump($wynik[0]) ,'</pre>';


$wynik[0]:
  1. array(3) {
  2. [0]=> string(2) "80"
  3. [1]=> string(4) "plus"
  4. [2]=> string(2) "20"
  5. }


Czy można jakoś ustawić preg_match_all, by w wyniku 80 było integerem, podobnie jak 20, a plus pozostawał stringiem?
Czyli:
  1. array(3) {
  2. [0]=> int(80)
  3. [1]=> string(4) "plus"
  4. [2]=> int(20)
  5. }
Go to the top of the page
+Quote Post
tomxx
post 18.01.2014, 20:38:14
Post #2





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


  1. <?php
  2. $txt = '80 plus 20 minus';
  3. preg_match_all('#\d+|plus#', $txt, $wynik);
  4.  
  5. foreach($wynik[0] as &$element)
  6. {
  7. # sprawdza, czy string zawiera liczbę
  8. if((int)$element)
  9. # jeśli tak, to rzutuje na (int)
  10. $element = (int) $element;
  11. }
  12.  
  13. echo'<pre>'; var_dump($wynik[0]); echo '</pre>';
  14. ?>


Ten post edytował tomxx 18.01.2014, 20:43:18
Go to the top of the page
+Quote Post
kreatiff
post 18.01.2014, 20:44:53
Post #3





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Czyli rozumiem, że samo preg_match_all nie ma takiej możliwości.

O rzutowaniu myslałem, ale chciałem się dowiedzieć czy może idzie to zrobić szybciej już na etapie wyłuskiwania danych.

Znalazłem krótsze dla mnie rozwiązanie, bo tablica będzie i tak zapisywana w JSON.
Wystarczy do json_encode dodać stałą JSON_NUMERIC_CHECK (PHP 5.3.3+):

  1. echo json_encode($wynik[0], JSON_NUMERIC_CHECK);
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: 24.05.2024 - 01:42