Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] skracanie zmiennej
jagwie
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 6.01.2008

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


Witam potrzebuje pomocy w skróceniu zmiennej na przykład do 20 znaków
Moja zmiena wygląda tak
  1. $opis = $wynik['opis_obiektu'];


Ten post edytował jagwie 8.08.2010, 09:48:45
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
mrc
post
Post #2





Grupa: Zarejestrowani
Postów: 160
Pomógł: 27
Dołączył: 22.09.2008
Skąd: Tarnów

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


  1. <?php
  2. $skrocona_zmienna = substr($zmienna_do_skrocenia, 0, 20);
  3. ?>
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




mb_substr, bo zwykłe substr i polskie znaki to złe połączenie, bo diakrytyczne jak ą, ś są ucinane "w połowie" (są zapisane na 2 bajtach, a substr uznaje za literę 1 bajt).
Go to the top of the page
+Quote Post
jagwie
post
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 6.01.2008

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


Zrobiłem to tak
  1. $opis = mb_substr($opis, 0, 250);
  2. $opis = $opis.'...';

A jak zrobić aby nie ucinało w połowie wyrazu
Go to the top of the page
+Quote Post
mrc
post
Post #5





Grupa: Zarejestrowani
Postów: 160
Pomógł: 27
Dołączył: 22.09.2008
Skąd: Tarnów

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


Do tego aby nie ucinało w połowie wyrazu, musisz zrobić własną funkcję... albo skorzystać z systemu szablonowania, np. Smarty, on ma modyfikator kontrolujący to (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
IceManSpy
post
Post #6





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


Musisz sprawdzić, czy przycinając np do 20 znaków, to czy ten ostatni jest literą. Jak tak, to musisz się cofnąć albo przesunąć do przodu do spacji albo.
Go to the top of the page
+Quote Post
flashdev
post
Post #7





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(jagwie @ 8.08.2010, 11:45:10 ) *
[...]
A jak zrobić aby nie ucinało w połowie wyrazu


Kawałek jednego z moich projektów, proszę bardzo:

  1. function getShortcut($str, $max = 100){
  2. $res = mb_substr($str, 0, $max);
  3. $pos = mb_strripos($res, ' ');
  4. $res = mb_substr($res, 0, $pos);
  5. return rtrim($res, " \n\r\t.,():;<>") . (mb_strlen($res) < mb_strlen($str) ? '...' : '');
  6. }
Go to the top of the page
+Quote Post
jagwie
post
Post #8





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 6.01.2008

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


Wywala mi błąd
Fatal error: Cannot redeclare getshortcut() (previously declared in
  1.  
  2. function getShortcut($opis, $max = 100){
  3.  
  4. $res = mb_substr($opis0, $max);
  5.  
  6. $pos = mb_strripos($res, ' ');
  7.  
  8. $res = mb_substr($res, 0, $pos);
  9.  
  10. return rtrim($res, " \n\r\t.,():;<>") . (mb_strlen($res) < mb_strlen($opis) ? '...' : '');
  11.  
  12. }
Go to the top of the page
+Quote Post
flashdev
post
Post #9





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Z tego co piszesz wynika, ze masz już gdzieś w kodzie funkcje o tej nazwie.

Edit:
To jedno, a drugie to już widzę, ze nieudolnie przerobiles moje funkcje. Tak własnie, teraz ona nie będzie działać.

Ten post edytował flashdev 8.08.2010, 12:04:59
Go to the top of the page
+Quote Post
jagwie
post
Post #10





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 6.01.2008

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


Zmieniam nazwę lecz jest to samo
Go to the top of the page
+Quote Post
Fifi209
post
Post #11





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(flashdev @ 8.08.2010, 12:02:13 ) *
To jedno, a drugie to już widzę, ze nieudolnie przerobiles moje funkcje. Tak własnie, teraz ona nie będzie działać.


Cytat(jagwie @ 8.08.2010, 12:08:14 ) *
Zmieniam nazwę lecz jest to samo


Hmm? Już przy pierwszym mb_substr zepsułeś jego funkcję.

Ten post edytował fifi209 8.08.2010, 12:14:36
Go to the top of the page
+Quote Post
flashdev
post
Post #12





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(fifi209 @ 8.08.2010, 13:10:35 ) *
Hmm?


$opis != $opis0
Go to the top of the page
+Quote Post
jagwie
post
Post #13





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 6.01.2008

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


poprawiłem lecz dalej to samo



  1. function getShortcut($opis, $max = 100){
  2.  
  3. $res = mb_substr($opis, 0, $max);
  4.  
  5. $pos = mb_strripos($res, ' ');
  6.  
  7. $res = mb_substr($res, 0, $pos);
  8.  
  9. return rtrim($res, " \n\r\t.,():;<>") . (mb_strlen($res) < mb_strlen($opis) ? '...' : '');
  10.  
  11. }
Go to the top of the page
+Quote Post
flashdev
post
Post #14





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(jagwie @ 8.08.2010, 13:49:32 ) *
poprawiłem lecz dalej to samo


Bo nie pofatygowałeś się nawet, żeby przeczytać mój post.

  1. function j6El0Rgema1uLNO8NVnT($str, $max = 100){
  2. $res = mb_substr($str, 0, $max);
  3. $pos = mb_strripos($res, ' ');
  4. $res = mb_substr($res, 0, $pos);
  5. return rtrim($res, " \n\r\t.,():;<>") . (mb_strlen($res) < mb_strlen($str) ? '...' : '');
  6. }
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: 23.08.2025 - 14:45