Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z wstawieniem apostrofa '`' do formularza
Forum PHP.pl > Forum > Przedszkole
mefistofeles
Mam zmienną: $a='Tekst`z apostrofem';

Wszędzie jest ok ale jak ją wstawiam w ten sposób:

  1. echo "<tr>
  2. <td rowspan='2'><B>Tytuł:</B></td>
  3. <td><input type='text' name='tytul' size='60' value='".$a."' /></td>
  4. </tr>



To pojawi się tylko 'Tekst' reszta od apostrofa do końca zostaje wycięta.
Dlaczego ?
batman
Dzieje się tak dlatego, ponieważ apostrof z wstawianego tekstu zamyka apostrof atrybutu value. Aby temu zapobiec musisz skorzystać z jednej z poniższych funkcji:
mefistofeles
No tak.
Tylko jest mały problem bo próbowałem z tymi funkcjami i jest tak samo.
Jedynie gdy używam:

$a=addslashes($a);

To w miejscu gdzie miał byćapostrof pojawia się slash:
Tekst/'


Wiem jak to obejść tylko potrzebuja jeszcze małej pomocy:

  1. $tytul = str_replace('`', 'a', $tytul);


Pierwszy problem to to, że w/w funkcja nie zamienia apostrofu na a, czemu ?
Drugi to taki jaki jest kod apostrofu w notacji typu
  1. &#123
(encja) ?
sadistic_son
Cytat(batman @ 6.02.2010, 10:01:58 ) *
Dzieje się tak dlatego, ponieważ apostrof z wstawianego tekstu zamyka apostrof atrybutu value. Aby temu zapobiec musisz skorzystać z jednej z poniższych funkcji:

Muszę się nie zgodzić! Nie w tym wypadku. Tutaj dzieje się tak dlatego, że czałość wyświetlasz w " a wartość value w '. A powinno być na odwrót. Spróbuj tak:
  1. echo '<tr>
  2. <td rowspan="2"><B>Tytuł:</B></td>
  3. <td><input type="text" name="tytul" size="60" value="'.$a.'" /></td>
  4. </tr>';
lub tak:
  1. echo "<tr>
  2. <td rowspan=\"2\"><B>Tytuł:</B></td>
  3. <td><input type=\"text\" name=\"tytul\" size=\"60\" value=\"$a\" /></td>
  4. </tr>";

Teraz zadziała choćbyś nie wiem co miał w zmiennej $a.
unikat_
właśnie że wszystko jest tak jak trzeba, u mnie taki kod wyświetla poprawne wyniki:
  1. <?php
  2.  
  3. $a='Tekst`z apostrofem';
  4. $a = addslashes($a) ;
  5.  
  6.  
  7. echo "<tr>
  8.  
  9. <td rowspan='2'><B>Tytuł:</B></td>
  10.  
  11.  
  12. <td><input type='text' name='tytul' size='60' value='".$a."' /></td>
  13.  
  14. </tr>" ?>



evolucja
A jeśli w zmienna będzie wyglądać tak? $a = '"/>cos'; ? To zamknie tego inputa czy wyświetli się w nim?
unikat_
Cytat(evolucja @ 6.02.2010, 11:14:00 ) *
A jeśli w zmienna będzie wyglądać tak? $a = '"/>cos'; ? To zamknie tego inputa czy wyświetli się w nim?


u mnie wyświetli się w nim winksmiley.jpg
mefistofeles
Dzięki za pomoc.
Wszystko gra.
batman
Cytat(sadistic_son @ 6.02.2010, 11:03:14 ) *
Teraz zadziała choćbyś nie wiem co miał w zmiennej $a.
Gwoli ścisłości. Wstaw do takiego formularza cudzysłów ("), a uzyskasz taki sam efekt. Niezależnie od sposobu pisania (pomijając to, który jest poprawny), należy odpowiednio filtrować dane.
sadistic_son
Ok, zgadzam się. Ale temat dotyczył apostrofu (tego nad TAB) i moje rozwiązanie, proste, acz działające odpowiada na zadane w temacie pytanie.
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.