Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] powiększanie zdjęcia w tekście
dachu
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


Witam,
Chciałbym zrobić coś takiego, w tekście mam zdjęcia,, np. zdjecie.jpg , jednocześnie na ftp ładowane jest zdjęcie o tej samej nazwie, tylko z końcówką (_b) - zdjecie_b.jpg (jest to zdjęcie powiększone).
Nie wiem jak napisać skrypt, dzięki któremu w tekście sprawdzane było by czy istnieje _b (itp) jeśli tak, to zamiana była by zapisu na powiększenie:

  1. <a href="images/zdjecie.jpg" id="lightbox"><img src="images/zdjecie_b.jpg" /></a>


czyli zapis do bazy treści był by np:

  1. blb ble ble ble <img src="images/zdjecie.jpg" /> ble ble ble


jeśli jest ta sama nazwa pliku na serwerze: zdjecie_b.jpg to zapis, powiększający zdjęcie w lightboxie:

  1. blb ble ble ble <a href="images/zdjecie.jpg" id="lightbox"><img src="images/zdjecie_b.jpg" /></a> ble ble ble


lub inny sposób,, galeria odpada,,, zależy mi na tym, żeby zdjęcie było osadzane gdziekolwiek w tekście a nie szablonowo :|
prosze o pomoc

Ten post edytował dachu 30.09.2011, 11:26:58
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 22)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Wyrażeniem regularnym pobierasz nazwę zdjęcia, sprawdzasz czy to zdjęcie istnieje na ftp i jeśli tak to zamieniasz na wersję jaką chcesz.
Go to the top of the page
+Quote Post
deha21
post
Post #3





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Jeśli dobrze zrozumiałem to chodzi o zwykły warunek IF z użyciem file_exists i pathinfo (z rozbiciem na filename i extension), hm?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




to musisz jeszcze użyć preg_match oraz str_replace.
Go to the top of the page
+Quote Post
dachu
post
Post #5





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


Pokombinowałem w taki sposób i działa,,, ale tylko dla pierwszego napotkanego obrazka :/ a chciałbym dla każdego ...

  1. preg_match ("/<img(.*?)>/is", $tresc, $znalezione);
  2.  
  3. $tresc = str_replace($znalezione[0],'<a href="'.str_replace(".jpg","_b.jpg",$znalezione[1]).'">'.$znalezione[0].'</a>',$tresc);
  4.  
  5. $tresc = str_replace('<a href=" alt=""','<a href="',$tresc); // wywalam alt z znacznika a
  6. $tresc = str_replace('<a href=" src="','<a href="',$tresc); // wywalam src z znacznika a
  7. $tresc = str_replace('/"',' ',$tresc); // wywalam niepotrzebny "
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Skoro nie sprawdzasz, czy plik istnieje, więc możesz użyć od razu preg_replace()
Jakbyś jednak chciał sprawdzać czy istnieje na ftp, to preg_match_all()
Go to the top of the page
+Quote Post
dachu
post
Post #7





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


z preg_match_all wywala mi Array ... :/
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Bo z preg_match_all masz użyc pętli.... preg_match_all zwraca ci wsyzstkie wyniki i ty masz przez nie przeiterować i w petli zamieniac.
Go to the top of the page
+Quote Post
dachu
post
Post #9





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


Cytat(nospor @ 3.10.2011, 07:59:14 ) *
Bo z preg_match_all masz użyc pętli.... preg_match_all zwraca ci wsyzstkie wyniki i ty masz przez nie przeiterować i w petli zamieniac.


tylko nie wiem jak to zapisać (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




print_r($wynikpregmatchall);
zobacz co zawiera i poprostu użyj pętli.

FOREACH
Go to the top of the page
+Quote Post
dachu
post
Post #11





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


na pętli,, ale to jest w treści np. artykułu...
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Sorki, ale Twojego poprzedniego posta ni w ząb nie kumam.
Go to the top of the page
+Quote Post
dachu
post
Post #13





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


  1. treść treść treść treść treść treść treść treść treść treść <img src="obrazek1.jpg" alt="" />treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść<img src="obrazek2.jpg" alt="" /> treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść


wyświetlony tekst z bazy powinien być taki:

  1. treść treść treść treść treść treść treść treść treść treść <a href="obrazek1_b.jpg"><img src="obrazek1.jpg" alt="" /></a> treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść <a href="obrazek2_b.jpg"><img src="obrazek2.jpg" alt="" /></a> treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść treść

Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No to wiemy. Dostałeś juz rozwiązanie parę postów wcześniej.
preg_match_all zwraca ci tablicę szukanych fraz. Teraz lecisz po nich w petli i zamieniasz, dokładnie tak samo jak zamieniałeś dla jednego w preg_match.
Go to the top of the page
+Quote Post
phpion
post
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie prościej/lepiej preg_replace lub preg_replace_callback?
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




isałem już o preg_replace ale zostało to zignorowane. Pewnie dlatego, że trzeba sprawdzić czy taki plik ostnieje na ftp.
Co do preg_replace_callback() to jest równie "skomplikowane" co preg_match_all
Go to the top of the page
+Quote Post
dachu
post
Post #17





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


Próbuje tak:, ale coś źle wyświetla,,,

  1. preg_match_all ("/<img(.*?)>/is", $tresc, $znalezione);
  2.  
  3. foreach ($znalezione as $wynik)
  4. {
  5.  
  6. $tresc= str_replace($wynik[0],'<a href="'.str_replace(".jpg","_b.jpg",$wynik[1]).'">'.$wynik[0].'</a>',$tresc);
  7. $tresc= str_replace('<a href=" alt=""','<a href="',$tresc);
  8. $tresc= str_replace('<a href=" src="','<a href="',$tresc);
  9. $tresc= str_replace('/"','',$tresc);
  10.  
  11. }
  12.  
  13. echo $tresc;
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




print_r($znalezione);
Patrzyłes jak ta tablicy wygląda? Pokaż nam.
Go to the top of the page
+Quote Post
dachu
post
Post #19





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


Cytat(nospor @ 3.10.2011, 10:14:34 ) *
print_r($znalezione);
Patrzyłes jak ta tablicy wygląda? Pokaż nam.


Array ( [0] => Array ( [0] => tutaj kod obrazka cały [1] => tutaj kod obrazka cały ) [1] => Array ( [0] => src="obrazek1.jpg" / [1] => src="obrazek2.jpg" / ) )

Ten post edytował dachu 3.10.2011, 11:20:03
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No i jak widać nazwy obrazków są pod indeksem 1 i dopiero po nim masz iterować.
  1. foreach ($znalezione[1] as $key=>$wynik){
  2. echo $wynik
  3. }
Go to the top of the page
+Quote Post
dachu
post
Post #21





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


Cytat(nospor @ 3.10.2011, 10:24:18 ) *
No i jak widać nazwy obrazków są pod indeksem 1 i dopiero po nim masz iterować.
  1. foreach ($znalezione[1] as $key=>$wynik){
  2. echo $wynik
  3. }


to mi nic nie wyświetla
Go to the top of the page
+Quote Post
nospor
post
Post #22





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Bo zjadłem średnik a ty skopiowałeś jak leci
Go to the top of the page
+Quote Post
dachu
post
Post #23





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 30.08.2005

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


wymęczyłem, i ostatecznie wystarczyło tylko:
  1. $html = preg_replace("/<img src=\"(.*?)\"[^>]*>/e", "'<a href=\"'.'\\1'.'\"><img src=\"'.'\\1'.'\" /></a>'", $html);
  2. $html = str_replace('.jpg">', '_b.jpg">' ,$html);


zamykamy temat,,,

Ten post edytował dachu 4.10.2011, 14:18:46
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 3.10.2025 - 06:58