Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Problem z str_replace, Nie chce sie wyśietlić :/
kartun11
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 2
Dołączył: 22.07.2007

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


Witam, próbuje zrobić taki mały skrypt, który używa funkcji str_replace i mam mały problem.
Najpierw skrypt:
  1. <?php
  2.  
  3. $link1 = str_replace("images", "img", $link);
  4.  
  5. $delete = array("x", "y");
  6. $link2 = str_replace($delete, "", $link1);
  7.  
  8. print("<p align='center'><img src='".$link2."' /></p>");
  9.  
  10. ?>


Zmienna $link wysyłana jest z formularza. W formularzu wpisałem link do fotki http://www.xy.pl/images/123xy.jpg.
Teraz pojawia się dodatkowy problem. Prawdziwa fotka jest pod adresem: http://www.xy.pl/img/123.jpg Zauważcie, że w nazwie strony są te same znaki co w nazwie zdjęcia w pierwszym linku. Jak usunąć "x" i "y" tylko w nazwie foty?
Jedziemy dalej... Powiedzmy, że już udało mi się przerobić http://www.xy.pl/images/123xy.jpg na http://www.xy.pl/img/123.jpg i chce wyświetlić ten obrazek, ale go nie widzę. Zamiast czegokolwiek jest puste pole. Tak jak by nic nie zostało przesłane. Formularz jest zrobiony poprawnie bo już go testowałem jak uczyłem się robić formularze, więc nie mam pojęcia co jest przyczyną tego, że nie pojawia się kompletnie nic w zamian za zmienną $link2. Bardzo proszę o pomoc w rozwiązaniu tych dwóch problemów.
1. Zmienna się nie wyświetla.
2. Jak usunąć "x" i "y" tylko w nazwie foty?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Sabistik
post
Post #2


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


Tytuł tematu nie spełnia wymagań regulaminu działu przedszkole. Zamykam. Po zgłoszeniu poprawnej formy któremukolwiek z moderatorów (wraz z linkiem do tego tematu) zostanie otwarty.
Go to the top of the page
+Quote Post
Cienki1980
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Otwieram

Co do problemu.
Najprościej to będzie zrobić tak, że po pierwszym użyciu str_replace dzielisz otrzymany string za pomocą explode("/",$link1); i następnie usuwasz z ostatniej części tego stringa znaki x i y .. po czym znowu łączysz w jeden string za pomocą implode("/",$string_array);
Go to the top of the page
+Quote Post
Xniver
post
Post #4





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

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


Można też za pomocą wyrażeń regularnych(chociaż nie jest to najwydajniejsze rozwiązanie). Masz tu przykład(wyrażenie pisane na szybko ,więc nie oczekuj cudów, ale testowałem i działa):
  1. <?php
  2. $link = 'http://www.xy.pl/images/123xy.jpg'; // Tu ten twój link
  3.  
  4. $photo = preg_replace('#http://.+.[a-z]{2,3}.+/(.+.[a-z]{3,4})#i', '1', $link); // Tutaj pobieramy nazwę zdjęcia
  5.  
  6. $photoNew = str_replace(array('x', 'y'), '', $photo);
  7.  
  8. $link = substr($link, 0, strlen($link) - strlen($photo)) . $photoNew;
  9.  
  10. echo $link;
  11. ?>
Go to the top of the page
+Quote Post
kartun11
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 2
Dołączył: 22.07.2007

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


Tylko, że ja nie wiem o co chodzi. Dopiero zaczynam str_replace i raczej mile widziany był by przykład. Czytałem trochę na php.net i się właśnie mocuje.
Najlepiej jak podam bardziej dokładniejszy link jaki chce zamienić.
http://serw.strona.pl/cache-thumb/EA/69/13540158_t.jpg chcę zamienić na http://serw.strona.pl/photos/EA/69/13540158.jpg.
Wiem, że nie wypada, ale może ktoś to napisać? Najlepiej się chyba nauczę na przykładzie konkretnym (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
I chcę ten nowy link umieścić tu jako zmienna $link2
  1. <?php
  2. print("<p align='center'><img src='".$link2."' /></p>");
  3. ?>

Pamiętajcie, że oryginalny link wysyłany jest formularzem.

Edit:
Xniver, działa tylko jeszcze images miało być zmienione na img (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Gdzie to wcisnąć?
I pojawił się jeszcze taki problem, że jak to zdjęcie jest na innym serwerze to zmieniona nazwa wygląda tak, że pokazuje ścieżkę do skryptu i zmienioną nazwę tego obrazka. Czyli http://www.innastrona.pl/skrypt/13540158.jpg a chciałem http://serw.strona.pl/photos/EA/69/13540158.jpg na innastrona.pl

W takiej sytuacji poszukam jeszcze jak użyć explode, ale mile widziane rozwiązanie w tym temacie.

EDIT2:
Rozwiązałem problem dzięki explode i implode (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Trochę się naczytałem ale dział. Dzięki za pomoc. Mój skrypt wygląda następująco:
  1. <?php
  2.  
  3. $_POST['link'] = str_replace('cache-thumb', 'photos', $_POST['link']);
  4.  
  5. list($http, $blank, $adres, $cachephotos, $let1, $let2, $fota) = explode("/", $_POST['link']);
  6.  
  7. $fota = str_replace(array('_', 't'), '', $fota);
  8.  
  9. $array = array($http, $blank, $adres, $cachephotos, $let1, $let2, $fota);
  10.  
  11. $_POST['link'] = implode("/", $array);
  12.  
  13. print("<p align='center'><img src='".$_POST['link']."' /></p>");
  14.  
  15. ?>


Ten post edytował kartun11 15.03.2008, 01:19:55
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 19:24