Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] skracanie zmiennej
jagwie
post 8.08.2010, 09:47:53
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
mrc
post 8.08.2010, 10:32:16
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 8.08.2010, 10:39:35
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).


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
jagwie
post 8.08.2010, 10:45:10
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 8.08.2010, 10:57:46
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 smile.gif


--------------------
Go to the top of the page
+Quote Post
IceManSpy
post 8.08.2010, 10:59:33
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 8.08.2010, 11:01:52
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 8.08.2010, 11:45:54
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 8.08.2010, 12:02:13
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 8.08.2010, 12:08:14
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 8.08.2010, 12:10:35
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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
flashdev
post 8.08.2010, 12:14:53
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 8.08.2010, 12:49:32
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 8.08.2010, 13:08:45
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 18:31