Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znaki enter
Forum PHP.pl > Forum > Przedszkole
Jarod
Niby banalny ale nierozwiązany problem http://forum.php.pl/index.php?showtopic=30232 Doszedłem do wniosku, że można ze stringu usunąć wszystkie znaki entera. Ale nie wiem jak. Czy jest do tego jakaś funkcja? Jeśli nie to jak to zrobić? Będę wdzięczny za pomoc. (mam nadzieje, że to pomoże )

Pozdrawiam
tiraeth
  1. <?php
  2. # non-stop operujemy na zmiennej $a
  3.  
  4. $a = str_replace(&#092;"<br />\", \"\", $a); # usuwany znak <br />
  5. $a = str_replace(&#092;"<br>\", \"\", $a);   # usuwany znak <br>
  6. $a = str_replace(&#092;"n\", \"\", $a); # usuwany znak n (unix)
  7. $a = str_replace(&#092;"r\", \"\", $a); # usuwany znak r (macos)
  8. $a = str_replace(&#092;"rn\", \"\", $a); # usuwany znak rn (win32)
  9. ?>


najprostszy sposób usuwania znaków entera smile.gif
Jarod
Cytat(volture @ 2005-05-16 19:43:26)
  1. <?php
  2. # non-stop operujemy na zmiennej $a
  3.  
  4. $a = str_replace(&#092;"<br />\", \"\", $a); # usuwany znak <br />
  5. $a = str_replace(&#092;"<br>\", \"\", $a);  # usuwany znak <br>
  6. $a = str_replace(&#092;"n\", \"\", $a); # usuwany znak n (unix)
  7. $a = str_replace(&#092;"r\", \"\", $a); # usuwany znak r (macos)
  8. $a = str_replace(&#092;"rn\", \"\", $a); # usuwany znak rn (win32)
  9. ?>


najprostszy sposób usuwania znaków entera smile.gif

Rozumiem. A po co to:
  1. <?php
  2.  
  3. $a = str_replace(&#092;"n\", \"\", $a); # usuwany znak n (unix)
  4. $a = str_replace(&#092;"r\", \"\", $a); # usuwany znak r (macos)
  5. $a = str_replace(&#092;"rn\", \"\", $a); # usuwany znak rn (win32)
  6.  
  7. ?>


Rozumiem, że to chodzi o znak entera pod tymi 3 systemami?

Pozdrawiam
Pigula
Cytat(J4r0d @ 2005-05-16 22:05:01)
Rozumiem. A po co to:
  1. <?php
  2.  
  3. $a = str_replace(&#092;"n\", \"\", $a); # usuwany znak n (unix)
  4. $a = str_replace(&#092;"r\", \"\", $a); # usuwany znak r (macos)
  5. $a = str_replace(&#092;"rn\", \"\", $a); # usuwany znak rn (win32)
  6.  
  7. ?>


Rozumiem, że to chodzi o znak entera pod tymi 3 systemami?

to chyba mozna pominac jak przed usuwaniem enterow zastosujesz funkcje nl2br.
Jarod
Cytat(Pigula @ 2005-05-16 22:05:01)
to chyba mozna pominac jak przed usuwaniem enterow zastosujesz funkcje nl2br.

nl2br zamienia znaki entera na </br>. A ja chę usunąć znaki entera, żeby ich nie liczył. Najlepiej przeczytajcie mój problem - może to coś rozjaśni Link wyżej:(

Pozdrawiam
crash
'Znak entera' to: pod UNIX'em: \n, pod Mac'em \r, pod Wingrozą \r\n. Aby pozbyć się tych znaków wystarczy:
  1. <?php
  2. $ciag = str_replace(array(&#092;"n\", \"r\"), '', $ciag);
  3. ?>

Istotne są użyte cudzysłowia gdyż np. '\n' nie zostanie poprawnie zinterpretowane jako chr(10)...
Jarod
To chyba nie to.
Mam w formularzu skrypt
  1. ...
  2. <!--
  3. //Funkcja ograniczająca ilość wpisywanych znaków
  4. function MaxL(obj)
  5. {
  6. if (obj.value.length > 10)
  7. {
  8. alert('Treść zlecenia nie może przekroczyć 255 znaków!');
  9. obj.value=obj.value.substr(0,10);
  10. }
  11. }
  12. //-->
  13. ...
  14.  
  15. <textarea onchange="MaxL(this);" name="tresc" cols="60" rows="4" wrap="virtual"></textarea>
  16. ...

Jeśli podam więcej znaków niż 10 to dostaję alert i skrypt obcina tekst do 10 znaków. Idąc tym tropem dalej dodatkowo zabezpieczyłem skrypt php na wypadek wyłączenia obsługi JS w przeglądarce.
Jeśli w formularzu podam taki ciąg znaków:
Kod
1
2
3
4
5

to do skryptu wysyłane jest tak naprawdę 13 znaków. I skrypt tego nie przepuszcza. Chcę to tak napisać, żeby skrypt sprawdzał właściwą ilośc znaków (widoczną), ale jednocześnie przy edycji tego zlecenia układ podany przez użytkownika (czyli entery) był zachowany. Czy jest to możliwe?

Pozdrawiam

EDIT: Albo funkję JS jakoś poprawić żęby liczyła entery.. Tylko nie wiem jak
crash
  1. <?php
  2. $t = '
  3. 1
  4. 2
  5. 3
  6. 4
  7. 5';
  8.  
  9. echo strlen($t); // 15
  10. echo strlen(str_replace(array(&#092;"n\", \"r\"), '', $t)); // 5
  11. ?>

To już nie rozumiem o co Ci chodzi...
Jarod
Sorki. Działa bo nie zapisuje na stałe w zmiennej tylko to jest chwilowe zastępowanie. chyba jestem za bardzo zmęczony. hx i sorki za trucie dupska smile.gif
pozdrawiam
J4r0d niezalogowany
Zrezygnuję z JS. Dlaczego bo JS liczy enter jako 1 znak w php i w bazie traktowane jest to jako 2 znaki. Nawet jak będę robił tak jak crashu to do bazy nie będzie zapisywane dokładnie to co JS przepuści tylko pomniejszone o 1 znak dodatkow dla każdego entera. Lepiej zostawić samo sprwdzanie w php

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.