Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Filter na img z formularza...
Ania-678
post
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.06.2007

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


Witam serdecznie.

Chcę zrobić "filtrowanko" na linki wkładane pomiędzy znaczniki bbcode (jak to jest na wielu skryptach for), które są wyciągane z przychodzącego (z formularza) do skryptu tekstu. Wymodziłam takie coś:


  1. <?php
  2. $str = $_POST['test'];
  3. preg_match_all('#[img](.*?)[/img]#si', $str, $img);
  4. $i = 0;
  5. foreach ($img as $val)
  6. {
  7. $val[$i] = preg_replace('#[img](.*?)[/img]#si', '1', $val[$i]);
  8. if(getimagesize($val[$i]))
  9. {
  10. echo '<br />OK<br />';
  11. }
  12. $i++;
  13. }
  14.  
  15. ?>


Jednak jest pewne ALE...

...jeśli w tekście jest więcej niż 2x [ img] [ /img] to sprawdza tylko dwa razy (2 razy echo'uje się...).

Dlaczego tak się dzieje - nie wiem, już kombinowałam na różne sposoby ale nic z tego nie wychodzi dry.gif Tak więc przychodzę z tym problemem na te forum rolleyes.gif
Go to the top of the page
+Quote Post
rzymek01
post
Post #2





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


bardzo proszę:

  1. <?php
  2. $str = $_POST['test'];
  3.  
  4. preg_match_all('#[img](.*?)[/img]#si', $str, $img);
  5.  
  6. $val = &$img[1];
  7. for ($i = 0, $count = count($val); $i < $count; ++$i)
  8. {
  9. if (getimagesize($val[$i]))
  10. {
  11. echo '<br />OK<br />';
  12. }
  13. }
  14.  
  15. ?>


smile.gif

zgodnie z manualem jesli nie ma ustawionej zadnej flagi to preg_match_all przyjmuje flagę PREG_PATTERN_ORDER
zgodnie z którą w indeksie [0] tablicy $img masz wyniki wraz z tagami [img][/img]
a w indeksie [1] tylko to co kazałaś zapamiętać, więc w naszym przypadku chodzi o indeks [1]

i teraz juz wszystko co chciałaś znaleźć masz w $img[1] i nie potrzeba już dalej szukać w pętli,
teraz można już spokojnie wykonać wszystkie operacje na wynikach smile.gif

Pozdrawiam!


--------------------
:]
Go to the top of the page
+Quote Post
Ania-678
post
Post #3





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.06.2007

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


Działa idealnie, dziękuję bardzo. smile.gif

Tylko pozostaje mały problemik, a mianowicie próba sprawdzenia Nieistniejącego pliku to wywala:

Cytat
Warning: getimagesize(http://localhost/test/2.jpg)[function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in D:Program FilesWebServhttpd\testindex.php on line 35


i nie bardzo potrafię się tego pozbyć ohmy.gif

Ten post edytował Ania-678 21.07.2008, 12:21:20
Go to the top of the page
+Quote Post
rzymek01
post
Post #4





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


daj znak małpy @ przed nazwą funkcji

Pozdrawiam!


--------------------
:]
Go to the top of the page
+Quote Post
Shili
post
Post #5





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Cytat
daj znak małpy @ przed nazwą funkcji
To nie jest dobry pomysł, błędy należy eliminować, a nie maskować.

Dodaj
  1. <?php
  2. if file_exists($val[$i]))
  3. ?>
tam, gdzie to potrzebne.
Go to the top of the page
+Quote Post
rzymek01
post
Post #6





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


i po co?
i potem jeszcze getimagesize?

fukcja getimagesize po prostu wysyła nam powiadomienie, że takiego pliku nie ma

a co jesli serwer nie ma włączonych wraperów url? kolejny błąd biggrin.gif

Ten post edytował rzymek01 22.07.2008, 12:42:12


--------------------
:]
Go to the top of the page
+Quote Post
Shili
post
Post #7





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


A co tutaj robi getimagesize? Sprawdza czy plik istnieje i wyświetla komunikat, w przeciwnym przypadku warning.

O wyłączonych wrapperach programista raczej wie na wstępie, o tym czy plik wpisany przez użytkownika istnieje niekoniecznie i należy wręcz zakładać (zgodnie z zasadą ograniczonego zaufania do użytkowników), że jednak część z nich istniała nie będzie. I tym należy się odpowiednio zająć, a nie problem maskować winksmiley.jpg
Go to the top of the page
+Quote Post
rzymek01
post
Post #8





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


jesli chodzi o pliki - masz rację, ale tu chodzi czy ten plik to obrazek, a nie czy plik który wpisał user istnieje sadsmiley02.gif


--------------------
:]
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 Aktualny czas: 22.08.2025 - 03:41