Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]preg_replace ominięcie podmienionego
szmerak
post 20.05.2011, 21:58:34
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


  1. function jest_plik($url)
  2. {
  3. $file = @fopen ("$url", "r");
  4. return ($file ? true : false);
  5. }
  6.  
  7. $url = preg_match_all("@\[img\](http:\/\/[a-zA-Z0-9\/._-]+)\[\/img\]@i", $tekst, $image);
  8. if($url != 0) {
  9. foreach( $image[1] as $imageurl )
  10. {
  11. if(jest_plik($imageurl))
  12. {
  13. $attr = getimagesize($imageurl);
  14. if($attr[0] > 500)
  15. {
  16. $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" width=500 />',$tekst);
  17. }else{
  18. $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" />',$tekst);
  19. }
  20.  
  21. }
  22.  
  23. }
  24.  
  25. }

Mam taki kodzik który zmniejsza obrazek jeśli jest większy od 500 do 500 a jeśli mniejszy to taki jaki jest.
I odziwo kod jest napisany dobrze ja przynajmniej nie znalazłem błędów.
I wszystko pięknie działa na localhoscie
Tylko gdy wrzuce to na serwer to już nie zmiejsza tylko wstawia całe zdjęcie.

Nieprawda że dziwne?


niee jednak nie działa na localhoscie jak powinno


Ten post edytował szmerak 21.05.2011, 10:54:19
Go to the top of the page
+Quote Post
Rid
post 20.05.2011, 22:14:17
Post #2





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Ktoś może i by pomógł,ale to skrawek kodu -nie wiadomo co niektóre zmienne przedstawiają.
NP. $tekst-nie widać co to jest.
Go to the top of the page
+Quote Post
szmerak
post 20.05.2011, 22:16:58
Post #3





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


  1. $sql = "Select text from.....";
  2. $row = mysqli_fetch_array($query);
  3. $tekst = $row[text];
  4.  
  5. i tak ogólnie zmiana
  6. if($url) na if($url != 0) {


Chyba nie ma więcej niewiadomych

Ten post edytował szmerak 20.05.2011, 22:18:06
Go to the top of the page
+Quote Post
pmir13
post 20.05.2011, 22:23:41
Post #4





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


Czy funkcja jest_plik() na pewno zwraca poprawną wartość? Czy pliki na pewno tam są? Czy php ma prawa do czytania tych plików?
Go to the top of the page
+Quote Post
plej
post 20.05.2011, 22:26:59
Post #5





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


Też tak mam że na localhost działa potem nie:/


co oznacza ta linijka:

  1. $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" width=500 />',$tekst);
  2. }else{
  3. $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" />',$tekst);
  4. }


Może preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" width=500 />',$tekst);

daj do else i zadziała? chyba że tak jak napisał pmir13
Go to the top of the page
+Quote Post
szmerak
post 20.05.2011, 22:31:43
Post #6





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Tak za każdym razem gdy obrazek istnieje zwraca true. Tak więc nie ma problemu z ta funkcja,
Sprawdziłem to teraz.

Tak jak napisałem jednak nie działa ani na serwerze ani na localhoscie.

Ale odziwo wczesniej działało tongue.gif

Plej masz tutaj odpowiedz na twoje pytanie
  1. $attr = getimagesize($imageurl);
  2. if($attr[0] > 500)


Ten post edytował szmerak 20.05.2011, 22:29:58
Go to the top of the page
+Quote Post
Rid
post 20.05.2011, 22:51:36
Post #7





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


drobna poprawka do kodu wątpię ,żeby pomogła,ale to błąd:
width=500 zmienić na:
width="500" w linice:
Cytat
$tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" width=500 />',$tekst);


Ten post edytował Rid 20.05.2011, 22:53:08
Go to the top of the page
+Quote Post
szmerak
post 20.05.2011, 23:05:43
Post #8





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


nie pomogło
Ja wsumie domyślam się gdzie jest błąd
$attr[0] > 500
Poprostu ten warunek jest nie spełniony a to jest właśnie to czego nie rozumiem ;/
próbowałem też z listowaniem ale nic z tego ;/ list($width ... $attr) = getimage...
a gdy daje echo $attr[0] tablica ta zawiera np. 1024 to jak logicznie biorąc ten warunek może być niespełniony?
Czyżby błąd w PHP(żart tongue.gif)

Naprawde opadam z rąk nie wiem jak to zrobić.

Ten post edytował szmerak 20.05.2011, 23:06:18
Go to the top of the page
+Quote Post
Rid
post 20.05.2011, 23:27:35
Post #9





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Hmm
$attr = getimagesize($imageurl);

if($attr[0] > 500)

Pobiera ,Pan rozmiar $attr a ,potem
porównuje rozmiar zadeklarowany jako tablica i w tym może być problem.
próbował Pan tak:
if($attr > 500) questionmark.gifquestionmark.gif
Go to the top of the page
+Quote Post
szmerak
post 21.05.2011, 07:02:44
Post #10





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Gdy usunę index z tej tablicy wtedy każde zdjęcie powiększa do 500 niezależnie czy jest większe czy mniejsze ;/
napoczątku gdy zmiejszyło myslalem ze wkoncu dziala ;/
ale znow problem z innymi obrazkami

Teraz chcial bym poruszyc jedna rzecz. $attr[0] powinnien zawierac width tak więc czemu w moim przykladzie w warunku (to nie dziala czy nie wiem sam co ;/)

Ten post edytował szmerak 21.05.2011, 07:03:30
Go to the top of the page
+Quote Post
thek
post 21.05.2011, 08:08:06
Post #11





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Może więc zobacz co zmienna $attr zawiera. Ogólnie zrób debug zmiennych od których coś uzależniasz. Może jakiś if ma problem. Poza tym zerknij wpierw na przyklejony temat Jak zadawać pytania. Tam mas wiele o debugu napisane.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
szmerak
post 21.05.2011, 09:00:53
Post #12





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


$attr zawiera width kazdego obrazka czyli tak jak powinno wszystko pięknie działa tylko ten warunek if($attr[0] > 500)
...nie wiem co z nim nie tak

i jeszcze podkreśle to że z jednym obrazkiem nie ma problemu ale gdy są już dwa skrypt nawala

//edit
już znalazłem w czym problem
  1. if($attr[0] > 500)
  2. {
  3. $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" width=500 />',$tekst);
  4. }else{
  5. $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" />',$tekst);
  6. }

Podmienia za pierwszym razem <img src bez width> gdy obrazek mniejszy od 500
a gdy znajdzie z widthem wiekszym to już drugie obkrążenie się tylko liczy czyli podmienia wszedzie width=500 dla niejasności gdyby w ostatnim okrążeniu był obrazek mniejszy wszędzie by wstawił bez width=500.
Wniosek ostatnie obkrążenie jest ważne

to teraz pytanie jak zrobić aby po zamienieniu jednego omijał go i przechodził do nastepnego a nie wszedzie podmienial
pewnie źle to jest zrobione prosze o jakies wskazowki hmm... myślałem aby jakoś je posortować...

Ten post edytował szmerak 21.05.2011, 10:18:13
Go to the top of the page
+Quote Post
Rid
post 21.05.2011, 10:38:42
Post #13





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Proszę sprawdzić zmienną $attr[0] - echo " {$attr[0]}",pewnie jest pusta.Ja na miejscu Pana zrobił bym tak jak powiedział thek-zobaczył co zawierają zmienne i wychwycić ,gdzie leży problem.
Go to the top of the page
+Quote Post
szmerak
post 21.05.2011, 10:50:18
Post #14





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Teraz jest inny problem tongue.gif do tego już doszłem napisałem to w poście wyżej tongue.gif więc nie bede doublował

Nie trzeba na Pan tongue.gif poprostu Szmerak smile.gif ^^

Ten post edytował szmerak 21.05.2011, 10:53:10
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: 14.08.2025 - 13:24