Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Treść wizualnie dokładnie taka sama
Krzychur
post
Post #1





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.01.2004
Skąd: Łódź

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


Witam!
Już od jakiegoś czasu próbuje rozwiązać mikroskopijny problem (który jest obecny w IPB, phpBB, ale np. allegro go nie ma), polegający na umieszczeniu domyślnej treści formularza wyświetlonej dokładnie w ten sam sposób, jak została wprowadzona. Mam na mysli wszystkie znaki specjalne, które użytkownik widzi w np. polu textarea.

Aby to dokonać [powierzchownie] wystarczy zwykłe zastosowanie stripslashes i htmlspecialchars na treści przekazanej w formularzu i jakiś preg dla znaków specjalnych innych od <, >, &.

  1. <?php
  2. $content = htmlspecialchars(stripslashes(isset($_POST['abc']) ? $_POST['abc'] : ''));
  3. $content = preg_replace('#&#([0-9]+);#','�1;',$content);
  4. echo '<form method="post">
  5. <textarea name="abc">'.$content.'</textarea>
  6. <input type="submit" />
  7. </form>';
  8. ?>


Ale...
Wprowadzając znaki specjalne różne od <, >, & w postaci wizualnej, encji angielskiej i encji numerycznej pojawiają się problemy. Wstawiając do formularza np. znaczka « [lewy znak cytowania] np. poprzez kopiowanie, czy kombinacje alt+numerki, po wysłaniu zostanie on odczytany jako 8#171; [oczywiście &=8]. Jeżeli obok umieścimy encję wpisaną ręcznie: 8#171;, to zostanie ona również automatycznie zamieniona na znak specjalny, jedynie « zostanie wyświetlone dokładnie z oryginałem.

Teraz do jeszcze raz powtórzę do czego zmierzam:
Chcę, zobaczyć w okienku textarea dokładnie taką samą treść jaką wysłałem, na IPB, phpBB to nie działa w sposób 100%. Dowód:
Wysyłam: « - 8laquo; 8#171;
Otrzymuję: « - 8laquo; « lub « - « - «
Chcę otrzymać: « - 8laquo; 8#171;

Encja numeryczna zamieniana wyświetlana jest od razu jako znak specjalny.
Encja angielska widoczna jest jako encja, ale w formularzu wyświetlana jest jako znak specjalny.

Sami możecie sprawdzić na podglądzie.

Czekam na dyskusję.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Przenosze z pr0 do php
Go to the top of the page
+Quote Post
em1X
post
Post #3





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Wybacz za tak powierzchowną odpowiedź, ale czy próbowałeś htmlentities" title="Zobacz w manualu php" target="_manual ?
Go to the top of the page
+Quote Post
Krzychur
post
Post #4





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.01.2004
Skąd: Łódź

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


Nigdy z tej funkcji nie korzystałem, ale po sprawdzeniu ona nie rozwiąże tego problemu, a nawet nie ma podstaw najmeniejszych do rozwiązania tego problemu.

Wysyłając znak specjalny w postaci widocznej np. "Ť" zostaje on automatycznie zamieniony na encje numeryczną, więc wpisawszy gdzieś obok encję numeryczną skrypt nie indetyfikuje co jest co. Jak odkryłem w poprzednim poście nawet encja angielską sprawuje się 50/50%.

Spróbuj wpisać tą treść: Ť - 8laquo; 8#171;
gdzieś w IPB, a zobacz różnicę np. wpisując na allegro [kliknij rejestrację, wpisz te ogonki w imieniu, zmieniając 8 na &, zawtiwerź OK i masz po chwili w formie dokładnie to co wpisałeś].

Ten post edytował Krzychur 8.06.2006, 15:05:06
Go to the top of the page
+Quote Post

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: 15.09.2025 - 03:06