Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Znikając wartość w zmiennej
lukash82
post 17.02.2017, 14:41:52
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Witam,

Mam problem ze "znikającą" wartością w zmiennej. Chodzi o przycinanie stringa jeśli jest za długi.

  1.  
  2. $tekst = "qweasdzxc";
  3. $ile = 5; //do ilu znakow przyciac
  4.  
  5. if(strlen($tekst)>$ile){
  6. echo $przytnij = substr(strip_tags($tekst), 0, strpos($tekst,' ',$ile));
  7. echo " ...";
  8. }
  9. else echo $tekst;
  10.  


Sprawa jest prosta jak konstrukcja cepa. I dziwne, że w innych miejscach identyczny kod działa. Efekt działania tego kodu to tylko ten trzykropek. Co tu jest nie halo? Jeśli ktoś z Was może mnie naprowadzić na błąd to proszę o podpowiedź. Pozdrawiam, Ł.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
viking
post 17.02.2017, 14:59:45
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


W $tekst nie ma żadnej spacji wyszukiwanej w strpos.


--------------------
Go to the top of the page
+Quote Post
lukash82
post 17.02.2017, 15:41:24
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Cześć,

Akurat w tym przykładowym tekście zapomniałem dodać spację więc stąd wynikał błąd. Ale naprowadziło mnie to na rozwiązanie...

Skrypt wykrzaczał mi się w przypadku gdy string miał przykładowo 206 znaków, a ja go chciałem dociąć do 200. Jednak w tym konkretnym przypadku ostatnie słowo miało 10 liter, a po słowie nie było już żadnej spacji, którą mógł mi wychwycić strpos. Wtedy zmienna traciła jakby zawartość i nic się nie pokazywało mi na stronie.

Tym oto sposobem straciłem 4h na szukanie byka w kodzie, którego nie było... Trzeba się napić... hehe;)

Mimo wszystko dzięki za naprowadzenie ~viking
Go to the top of the page
+Quote Post
viking
post 17.02.2017, 15:50:49
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Weź jeszcze pod uwagę że badasz długość stringa bez kodowania multibyte mb_strlen.
Bardziej odporne może być np
  1. $string = 'asajkshdhfjsh dgfjhs dgfjhs dgjhf sjdhf gjshdg jhfgdjhfgdj';
  2. var_dump(preg_replace('/\s+?(\S+)?$/', '...', substr($string, 0, 40)));


--------------------
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: 19.07.2025 - 19:40