Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwersja łańcucha znaków do liczby całkowitej.
Forum PHP.pl > Forum > PHP
starach
Witam.
Za pomocą preg_match_all pobieram dwie wartości które są godziną.
PHP nie chce mi ich przekonwertować sam do integer-a,
więc probuję rzutować typy:
(int) nie działa
settype() nie działa
intval() nie działa

Żadne z powyższych rozwiązań mi nie działa i ustawia wartość zmiennej na 0.
Nawet settype które zwraca true też ustawia mi wartość zmiennej na 0.
Co jest grane ? :/
Jabol
Pokarz te dwie zmienne. Tzn. te dwa string jak wyglądają zaraz przed konwersją.
Kicok
A jesteś pewien, że pobrałeś samą liczbę? Może masz jakieś tagi HTML'owe przed nią, albo inny tekst i dlatego konwertuje ci to do zera.
starach
Na 100 procent nie mam:
Wartosc: '15'
Wartosc: '59'
apostrofy ' dodałem w pętli foreach żeby zobaczyć czy nie ma tam jakichś spacji.
abc667
był już podobny temat, pokaż jak tego używasz
Darti
a taka funkcyjka ? :
  1. <?php
  2. function str2int($string){
  3. $suma = 0;
  4. $arr = str_split($string);
  5. $arr = array_reverse($arr);
  6. foreach ($arr as $key => $value) {
  7. $suma += (ord($value) - 48) * pow(10,$key);
  8. }
  9. return $suma;
  10. }
  11.  
  12. $numer = '123405';
  13.  
  14. print (is_int($numer) ? "numern" : "nie numern");
  15. print (is_int(str2int($numer)) ? "numern" : 'nie numern');
  16. ?>
starach
Godzin(double)(15): 1.90143911557E+039
Minut(double)(59): 1.90143911557E+039
Niestety nie działa sad.gif
Dane wejściowe
CODE
$string = '</tr>
<tr>
<td><p><b>Godz.</b></p></td>

<td><p>
<select name="godzina" class="bselect">
<option value="">GG</option>

<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>

<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>

<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15" selected>15</option>

<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>

<option value="22">22</option>
<option value="23">23</option>
</select>
<select name="minuta" class="bselect">
<option value="">MM</option>

<option value="00">00</option>
<option value="01">01</option>

<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>

<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>

<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>

<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>

<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>

<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36" selected>59</option>
<option value="37">37</option>

<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>

<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>

<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>

<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
</select>
</p>
</td>

</tr>';
Skrypt przetwarzający:
  1. <?php
  2. preg_match_all('/<option value="(d+)" selected>(?biggrin.gif+)</option>/', $string, $arr);
  3. $godzin = str2int($arr[0][0]);
  4. $minut = str2int($arr[0][1]);
  5.  
  6. echo "<hr>Godzin(".gettype($godzin).")(".$arr[0][0]."): $godzin<br>";
  7. echo "Minut(".gettype($minut).")(".$arr[0][1]."): $minut<hr>";
  8. ?>
str2int jest funkcją z postu Darti-ego

Zrobiłe zrzut za pomocą serialize()
Godzin: s:39:"15";
Minut: s:39:"59";
Dlaczego on mi podaje że 15 i 59 mają po 39 znaków długości ? ohmy.gif
Kicok
dry.gif


Zaraz po wykonaniu funkcji preg_match_all( '/wyrażenie/', $string, $arr ) zrób sobie:
  1. <?php
  2.  
  3. echo '<pre>';
  4. echo '$arr[0]: <br>';
  5. print_r( $arr[0] );
  6.  
  7. echo '$arr[1]: <br>';
  8. print_r( $arr[1] );
  9. echo '</pre>';
  10.  
  11. ?>

Oczywiście masz się popatrzeć do źródła strony.


[EDIT]
@Down:
No jak ci się nie chciało przeanalizować kodu, który ci dałem, to się nie dowiesz tongue.gif
starach
Ja mam zamiast tego funkcje test_array która drukuje mi od razu na ekranie tablicę. Pobrałem wartości z tablicy o indeksie 1 i zaczęło śmigać chociaż nadal jest dla mnie zagadką dlaczego wartości były takie długie.
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.