Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jedna funkcja używana dla wielu zmiennych.
Forum PHP.pl > Forum > Przedszkole
torbicki65
Witam
Jeśli mam np. dużo zmiennych z jakiegoś formularza i każdą z nich chcę przepuścić przez htmlspecialchars, to czy jest jakiś sposób, żeby zapisać to w jak najkrótszej postaci, czy muszę za kazdym razem pisać htmlspecialchars($kolejnazmienna); ?
pozdrawiam
plurr
możesz do funkcji przekazać tablicę, a w funkcji sparsować wszysystkie zmienne z użyciem foreach
erix
array_map" title="Zobacz w manualu PHP" target="_manual, nie trzeba żadnych tasiemców pisać.
230005
No możesz zrobić np tak:

Kod
//zakłada że używasz POST?
  
  foreach($_POST as &$wartosc)
    $wartosc = htmlspecialchars($wartosc);


Ampersand ( & ) przed zmienną $wartosc to referencja. Zrobiłem tak dlatego, że $wartosc jest kopią tablicy $_POST. Jeśli chcesz żeby wewnątrz pętli foreach coś się w niej zmieniło musisz użyć właśnie referencji - & . Minus takiego rozwiązania objawi się najprawdopodobniej jeśli użyjesz metody GET. Wtedy pętla przetworzy nawet to czego byś nie chciał (np. jakieś zmienne przekazywane w url, a nie pochodzące z formularza...) .
Pax95
Albo tak jak powiedział erix w praktyce:
  1. <input type="text" name="data[name]"><br>
  2. <input type="text" name="data[surname]">
  3. (...)

  1. <?php
  2. function protect( $input )
  3.   return htmlspecialchars( $input );
  4. $finalVarible = array_map( 'protect', $_POST['data'] );
  5. ?>
erix
Ale kombinujesz. ;P Przecież wbudowaną funkcję interpretera też można podać jako pierwszy argument. winksmiley.jpg

  1. <?php
  2. $_POST = array_map('htmlspecialchars', $_POST);
  3. ?>
Pax95
Rzeczywiście, nie pomyślałem : D. Ale jak się wykonuje więcej akcji, to to jest dobre rozwiązanie ^^
torbicki65
Cytat(erix @ 31.01.2009, 20:43:41 ) *
Ale kombinujesz. ;P Przecież wbudowaną funkcję interpretera też można podać jako pierwszy argument. winksmiley.jpg

  1. <?php
  2. $_POST = array_map('htmlspecialchars', $_POST);
  3. ?>


Dziękuję, to chyba rzeczywiście najlepsze rozwiązanie dla formularza smile.gif
pozdrawiam
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.