Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyciągnięcie fragmentu ciągu z url
Forum PHP.pl > Forum > Przedszkole
zibihehe
Witam, mam mały problem odnośnie wyciągania danych- ciągu z url. Poczytałem trochę kursów i porad na ten temat ale akurat na ten problem nie znalazłem odpowiedzi. Mianowicie chodzi o odnalezienie i wycięcie ciągu od określonych znaczników np.
  1. www.jakisadres.pl/folder1/folderdrugi/jakistamfolder/nazwafoto.jpg

Problem polega na tym że ilość folderów może być różna, metoda explode chyba nie zdałaby by tu za bardzo egzaminu a z pewnością jest o wiele prostsza metoda. Chodziło by mi o wycięcie ciągu od końca danego url od np znaku . (kropki) do znaku / (patrząc od końca).
Jeśli możecie to pomóżcie. wstydnis.gif
skw
wyciąganie ciągu znaków do kropki:

  1. preg_match("|/([^.]{1,})|", $site, $cos);
gorden
Może?
  1. $url = "www.jakisadres.pl/folder1/folderdrugi/jakistamfolder/nazwafoto.jpg";
  2. $slashe = 0;
  3. while($x<=0) {
  4. $ex = explode('/', $url);
  5. $ex = $ex[$slashe+1];
  6. if($ex !== null) $slashe++;
  7. else break;
  8. }
  9. $ex = explode('/', $url);
  10. $ex = explode('.', $ex[$slashe]);
  11. echo $ex[0]; //wyswietlic powinno 'nazwafoto'
monstershark
Chyba chodzi ci oto:

Gotowiec ( prawie ) na wyciagniecie zdjęcia, linku downloadu, i opisu na danej stronie url . Może cie to naprowadzi winksmiley.jpg

  1. include 'curl.class.php';
  2.  
  3. $a = (isset($_GET['a']))?$_GET['a']:'';
  4. $dzial = (isset($_GET['dzial']))?$_GET['dzial']:'';
  5. $strona = (isset($_GET['strona']))?$_GET['strona']:'';
  6. $url = (isset($_GET['url']))?$_GET['url']:'';
  7. $dzial_id = (int)(isset($_GET['dzial_id']))?$_GET['dzial_id']:0;
  8.  
  9. switch ($a) {
  10. case 'get_linki' : get_linki($dzial, $strona, $url); break;
  11. case 'do_wpis' : do_wpis($url , $dzial_id); break;
  12. }
  13.  
  14. function get_linki($dzial, $strona, $url) {
  15. include 'config.php';
  16. $adres = $url . $dzial . '/page/' . $strona;
  17. $curl = new curl;
  18. $curl->url($adres);
  19. $curl->post(0);
  20. $data = $curl->execute(); //pobranie strony z listą aplikacji
  21.  
  22. $pattern = "#<div class=\"txt\"> <a href=\"(.*)\"><strong>Download<\/strong>#sUi";
  23. $pattern = "#<td rowspan=\"2\" valign=\"top\"><b><a href=\"(.*)\">#sUi";
  24.  
  25. preg_match_all($pattern, $data, $out);
  26. $linki = $out[1];
  27.  
  28. $return_array = array(
  29. 'text'=>'Znaleziono ' . count($linki).' wstawek. '.$adres,
  30. 'linki' => $linki,
  31. 'dzial' => $dzial,
  32. 'strona' => $strona,
  33. 'dzial_id' => $config[$url][$dzial][1]
  34. );
  35. echo json_encode($return_array);
  36.  
  37.  
  38. }
  39.  
  40. function do_wpis($url , $dzial_id) {
  41.  
  42. $curl = new curl;
  43. $curl->url($url);
  44. $curl->post(0);
  45. $data = $curl->execute();
  46. //titles
  47. $title_pattern = "#<\/td><td width=\"100%\"><h1>(.*)<\/h1>#sUi";
  48. $title_pattern = "#<\/td><td width=\"100%\"><b>(.*)<\/b>#sUi";
  49. preg_match($title_pattern, $data, $out);
  50. $title = isset($out[1])?$out[1]:false;
  51.  
  52. //imgs
  53. $img_pattern = "#<!--dle_image_begin:(.*)\|-->#sUi";
  54. preg_match($img_pattern, $data, $out);
  55. $img = isset($out[1])?$out[1]:false;
  56.  
  57. if (!$img) {
  58. $img_pattern = "#<div style=\"text-align: center;\"><img src=\"(.*)\"#sUi";
  59. preg_match($img_pattern, $data, $out);
  60. $img = isset($out[1])?$out[1]:false;
  61. }
  62.  
  63. if (!$img) {
  64. $img_pattern = "#<div style=\"text-align: center;\"><img(.*)/#sUi";
  65. preg_match($img_pattern, $data, $out);
  66. $img = isset($out[1])?$out[1]:false;
  67. }
  68.  
  69. if (!$img) {
  70. $img_pattern = "#><tr><td class=(.*)alt=#sUi";
  71. preg_match($img_pattern, $data, $out);
  72. $img = isset($out[1])?$out[1]:false;
  73. }
  74. //dpwnlaods links:
  75.  
  76. $dwnl_pattern = "#<table width=\"100%\"><tr><td class=\"txt\">(.*)><b>TAGS#sUi";
  77. preg_match($dwnl_pattern, $data, $out);
  78. $dwnl = isset($out[1])?$out[1]:false;
  79.  
  80. if (!$dwnl) {
  81. $dwnl_pattern = "#-->Download links :<!--colorend--></span><!--/colorend-->(.*)>Download</a></div><br /><!--QuoteEnd-->"; //downtr
  82. preg_match($dwnl_pattern, $data, $out);
  83. $dwnl = isset($out[1])?$out[1]:false;
  84. }
  85.  
  86.  
  87. $status = 'success';
  88. $txt = 'Dodano.';
  89. }
  90. else {
  91. $status = 'error';
  92. $txt = 'Wystąpiły błędy. Nie dodano. title:'.(($title)?'ok':'false').', img:'.(($img)?'ok':'false').', linki:'.(($dwnl)?'ok':'false');
  93. }
  94.  
  95. echo json_encode(array('text'=>$txt, 'status' => $status));

zibihehe
Dzięki monstershark ale gotowiec nie bedzie potrzebny- może w przyszłości się jednak sprzydać smile.gif winksmiley.jpg Gorden przy twoim skrypcie wyswietla mi jedynie pierwszy ciąg do znaku / sad.gif. Skw pewno twoje rozwiązanie jest prawidłowe ale ja chyba coś poknociłem, pod $site podstawiłem dany URL, a $cos traktuje jako wyciągnięty fragment ciągu- niestety jednak wyświetla mi wynik Array ?
gorden
Poprawiłem:
  1. $url = "www.jakisadres.pl/folder1/folderdrugi/jakistamfolder/nazwafoto.jpg";
  2. $slashe = 0;
  3. while($x<=0) {
  4. $ex = explode('/', $url);
  5. $ex = $ex[$slashe+1];
  6. if($ex !== null) $slashe++;
  7. else break;
  8. }
  9. $ex = explode('/', $url);
  10. $ex = explode('.', $ex[$slashe]);
  11. echo $ex[0]; //wyswietlic powinno 'nazwafoto'

Działa na 100%..
lobopol
  1. $url = www.asdsad.pl/asdsa/asdas/asdasd/sada/sadasd/foto.jpg
  2.  
  3. $tab = explode('/', $url);
  4. $ostatnia = end($tab);
  5. echo $ostatnia // foto.jpg
  6. $tab2 = explode('.', $ostatnia);
  7. echo $tab2[0]; //foto

zibihehe
Dzięki wielkie gorden działa jak należy- oto chodziło smile.gif Masz wielki pozytyw u mnie biggrin.gif

Lobopol- też wielkie dzięki- twoja metoda również działa bez zarzutów a w sumie jest nieco krótsza i bardziej przyswajalna dla parsera;)
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.