Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]preg_match wiele wartości
neo1986kk
post 4.06.2011, 00:46:52
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


Witam mam takie pytanie bardziej tylko z ciekawości.

Jak to jest żę

  1. <?php
  2.  
  3. $url = "http://www.youtube.com/watch?v=LMZroFpNQ4o";
  4.  
  5. $page = file_get_contents($url);
  6.  
  7. preg_match_all("/\/watch\?v=(.*?)[&\"]/i", $page, $matches);
  8. $id_array = $matches[1];
  9. print_r($id_array);
  10.  


wyświetla wiele wartości, chodzi mi o to jak to jest zrobione, dlatego ze idąc tym tropem to chyba pod jenym kodem można zapisać wiele parametrów...
Tak mi się wydaje, tylko nie rozumiem właśnie skąd to się bierze, ale to dlatego że nie rozumiem samego preg_match
Go to the top of the page
+Quote Post
nekomata
post 4.06.2011, 04:08:56
Post #2





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


Preg match to wyrażenia regularne , a (.*?) pochłania o ile mi wiadomo największą możliwą ilość znaków (albo najmniejszą , nie pamiętam :?) jeśli chodzi Ci o parametry GET to ja bym użył czegoś takiego :
  1. <?php
  2. $url = "http://www.youtube.com/watch?v=LMZroFpNQ4o";
  3. $page = file_get_contents($url);
  4. preg_match_all('#href="\/watch\?([^"]+)"#', $page, $matches);
  5. $half_parsed = array();
  6. $parsed = array();
  7. foreach($matches[1] as $value){
  8. $half_parsed[]=htmlspecialchars_decode($value);
  9. }
  10. foreach($half_parsed as $key => $value){
  11. $exploded = explode("&",$value);
  12. foreach($exploded as $k=>$v){
  13. $x = explode('=',$v);
  14. $parsed[$key][$x[0]]=$x[1];
  15. }
  16. }
  17. echo '<pre>';
  18. print_r($parsed);
  19. echo '</pre>';
  20. ?>
A i myślę że lepiej by było używać cUrl'a .. chyba że u siebie na kompie to robisz .

Ten post edytował nekomata 4.06.2011, 04:09:46
Go to the top of the page
+Quote Post
bastard13
post 4.06.2011, 07:45:12
Post #3





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Masz coś takiego:
  1. preg_match_all("/al([aei])/i", $data, $matches);

gdzie:
$data = 'Ala ma kota, ale kot nie ma Ali';
$matches wygląda tak:
array(2) {
[0]=> array(3) {
[0]=> string(3) "Ala"
[1]=> string(3) "ale"
[2]=> string(3) "Ali" }
[1]=> array(3) {
[0]=> string(1) "a"
[1]=> string(1) "e"
[2]=> string(1) "i" }
}
Jest tak dlatego, że pierwsza tablica zawiera wszystkie ciągi pasujące do całego wzorca, czyli: Ala, ale, Ali.
Natomiast w drugiej jest to, co pasuje do podwzorca (to, co jest pomiędzy ()), czyli: a (bo w Ala jest a), e (bo w ale jest e), i (bo w Ali jest i)
Możesz się pobawić z zagnieżdżonymi i mnogimi podwzorcami, to pomoże ci lepiej to wszystko zrozumieć.

Jest to naprawdę fajna funkcja, wogóle całe wyrażenia regularne to coś świetnego:) Polecam tylko, że trzeba sporo poczytać, żeby coś z tego zaczęło wychodzićsmile.gif


--------------------
Go to the top of the page
+Quote Post
neo1986kk
post 4.06.2011, 14:23:30
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [v] => LMZroFpNQ4o
  6. )
  7.  
  8. [1] => Array
  9. (
  10. [v] => RpRH6PgJarw
  11. [feature] => fvwrel
  12. )
  13.  
  14. [2] => Array
  15. (
  16. [v] => 3bMkSprca24
  17. [feature] => list_related
  18. [playnext] => 1
  19. [list] => SP0848589BB0CF8B3C
  20. )
  21.  
  22. [3] => Array
  23. (
  24. [v] => _3GL4_bGjwA
  25. [feature] => relmfu
  26. )
  27.  
  28. [4] => Array
  29. (
  30. [v] => LM1R_rhWoX0
  31. [feature] => relmfu
  32. )
  33.  
  34. [5] => Array
  35. (
  36. [v] => 2a6XAgUsmj0
  37. [feature] => relmfu
  38. )
  39.  
  40. [6] => Array
  41. (
  42. [v] => u-MvAoMrRfM
  43. [feature] => relmfu
  44. )
  45.  
  46. [7] => Array
  47. (
  48. [v] => XbWTv67zZGM
  49. [feature] => related
  50. )
  51.  
  52. [8] => Array
  53. (
  54. [v] => QgImqENTHg4
  55. [feature] => related
  56. )
  57.  
  58. [9] => Array
  59. (
  60. [v] => dLNaG1ochbY
  61. [feature] => related
  62. )
  63.  
  64. [10] => Array
  65. (
  66. [v] => pBhdGV_rizI
  67. [feature] => related
  68. )
  69.  
  70. [11] => Array
  71. (
  72. [v] => 1LliZIima7E
  73. [feature] => related
  74. )
  75.  
  76. [12] => Array
  77. (
  78. [v] => 1qTFOHqpqK8
  79. [feature] => related
  80. )
  81.  
  82. [13] => Array
  83. (
  84. [v] => hq5NIwqcwrw
  85. [feature] => related
  86. )
  87.  
  88. [14] => Array
  89. (
  90. [v] => SfVwhatXG4I
  91. [feature] => related
  92. )
  93.  
  94. [15] => Array
  95. (
  96. [v] => OVWS0IRFfuw
  97. [feature] => related
  98. )
  99.  
  100. [16] => Array
  101. (
  102. [v] => kO8sZLUnfp8
  103. [feature] => related
  104. )
  105.  
  106. [17] => Array
  107. (
  108. [v] => 3vfVOJaZw4M
  109. [feature] => related
  110. )
  111.  
  112. [18] => Array
  113. (
  114. [v] => y7ZEVA5dy-Y
  115. [feature] => related
  116. )
  117.  
  118. [19] => Array
  119. (
  120. [v] => O6foVpfj9ow
  121. [feature] => related
  122. )
  123.  
  124. [20] => Array
  125. (
  126. [v] => 89nD9XG_tCw
  127. [feature] => related
  128. )
  129.  
  130. [21] => Array
  131. (
  132. [v] => aa2Qvj4G8uY
  133. [feature] => related
  134. )
  135.  
  136. )


hehe no fajnie wyszło, tylko dobrze by było wiedzieć co to wszystko oznacza

z tego co widze to są poprsostu filmy podobne do tego którego adres pobieramy

Ten post edytował neo1986kk 4.06.2011, 14:25:56
Go to the top of the page
+Quote Post
nekomata
post 6.06.2011, 17:05:58
Post #5





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


To są linki do filmu ze wszystkimi parametrami($_GET) w formie tablic . Myślałem że o to właśnie pytałeś (trochę niesprecyzowane było jak dla mnie pytanie).
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: 6.07.2025 - 09:26