Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyrażenia regularne explode i ereg_replace [php]
Forum PHP.pl > Forum > Przedszkole
Kozazone
Witam mam mały problem :
1. Zczytuje ze strony dane w postaci stringa
2. chce wyłuskać z nich liczby ( Korzystam z wyrażenia regularnego ale coś nie działa)
Proszę o pomoc bo sam już nie wiem dlaczego to nie działa, może po prostu źle rozumiem działanie funkcji ereg_replace lub explode
Chcę na razie tylko wyłuskać dane .

Oto dane z pliku tekstowego do którego zrzucam ze strony :(oczywiscie tutaj nie widać znaków nowej linii ktore są normalnie widoczne w pliku txt)
numer data losowania L_1 L_2 L_3 L_4 L_5 L_6 L_7 L_8 L_9 L_10 L_11 L_12 L_13 L_14 L_15 L_16 L_17 L_18 L_19 L_20
3768 2007-08-29 46 64 69 6 53 43 35 58 50 23 8 16 45 7 59 44 74 73 18 3
3767 2007-08-28 6 11 80 37 75 39 19 42 78 43 76 57 24 47 48 1 64 66 9 69

Jak widać jest to plik ze strony lotka smile.gif

a oto mój kod:
  1. <?php
  2.  
  3. ?>Wprowadź adres strony:<br />
  4.  
  5. <form method="post" action="pierwszy.php"> 
  6. <input type="text" name="adres" style="width: 300px;" /><br />
  7. <hr /> 
  8. <br /><input name="submit" type="submit" value="wprowadź adres" />
  9. </form>
  10. <?php 
  11. $adres= $_POST['adres'];
  12.  
  13.  
  14. function wyluskaj_ze_strony($adres1)
  15. {
  16. $ch = curl_init($adres1);
  17. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  18. $zm1=curl_exec($ch);
  19. global $zmieniony;
  20.  $zm2=nl2br($zm1);
  21. curl_close($ch);
  22. $wzorzec = "^(([0-9]{4})-([0-9]{2})-([0-9]{2}))$";
  23. $wpis = 'ss';
  24. $zmieniony = ereg_replace($wzorzec,$wpis,$zm1);
  25. //$zm3=explode($wzorzec,$zm1);
  26. $rozmiar = sizeof($zm3);
  27. /*for($i=0;$i<$rozmiar;$i++)
  28. {
  29. echo $zm3[$i];
  30. echo "<br /><br />";
  31. } */
  32. echo $zmieniony;
  33. $fp = fopen("dane.ait", "w");
  34. fwrite($fp,$zmieniony);
  35. fclose($fp);
  36. }
  37. if($adres){
  38. wyluskaj_ze_strony($adres);
  39.  
  40. }
  41. else
  42. {echo "wprowadź poprawny adres strony";}?>
drPayton
No do explode jako separator trzeba string podać, a nie regexpa. Do tego celu użyj preg_split (z odpowiednim filtrem jeśli potrzebny, np PREG_SPLIT_DELIM_CAPTURE spowoduje, że separator pozostanie w tablicy jako element)
Kozazone
dzieki za odpowiedź oto jak rozwiązałem mój problem co prawda odpowiedź odczytałem jak już to zrobiłem ale i tak dzieki smile.gif:
  1. <?php
  2.  
  3. ?>Wprowadź adres strony:<br />
  4.  
  5. <form method="post" action="pierwszy.php"> 
  6. <input type="text" name="adres" style="width: 300px;" /><br />
  7. <hr /> 
  8. <br /><input name="submit" type="submit" value="wprowadź adres" />
  9. </form>
  10. <?php 
  11. $adres= $_POST['adres'];
  12.  
  13.  
  14. function wyluskaj_ze_strony($adres1)
  15. {
  16. $ch = curl_init($adres1);
  17. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  18. $zm1=curl_exec($ch);
  19. global $zmieniony;
  20.  $zm2=nl2br($zm1);
  21. curl_close($ch);
  22.  
  23.  $zm3=preg_split("/(([0-9]{1,4}).([0-9]{4})-([0-9]{2})-([0-9]{2}))/",$zm1);
  24.  
  25. $rozmiar = sizeof($zm3);
  26.  
  27. echo "rozmiar to:".$rozmiar."<br />";
  28. for($j=2;$j<$rozmiar;$j++)
  29. {$zm4=$zm3[$j];
  30. $rozbij = preg_split("/([^0-9]{1,20})/",$zm4);
  31.  
  32.  
  33. $rozm = sizeof($rozbij);
  34.  
  35.  
  36.  $rozbij3 = sort($rozbij);
  37. for($z=1;$z<$rozm;$z++)
  38. {$tabl[$j-2][$z-1]=$rozbij[$z];
  39. $tabl2[$j-2][$rozbij[$z]-1]=$rozbij[$z];
  40.  
  41. echo $tabl[$j-2][$z-1]." ";
  42. }
  43. $tablica[80];
  44.  
  45. for($zl=1;$zl<81;$zl++)
  46. {
  47. if($tabl2[$j-2][$zl-1]==$zl)
  48. {$tablica[$zl-1]=$tablica[$zl-1]+1;}
  49. }
  50.  
  51. $implozja=implode(' ',$rozbij);
  52. $fp = fopen("dane.txt", "ab");
  53. fwrite($fp,$implozja."\n");
  54. fclose($fp);
  55. echo "<br />
  56. <br />";
  57. } 
  58. for($i=0;$i<80;$i++)
  59. {$k=$i+1;
  60. echo "Tablica dla ".$k." wynosi:".$tablica[$i]."
  61. <br />";
  62. }
  63.  
  64. }
  65. if($adres){
  66. wyluskaj_ze_strony($adres);
  67.  
  68. }
  69. else
  70. {echo "wprowadź poprawny adres strony";}?>
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.