Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Przycinanie stringu a koniec wyrazu
KotWButach
post 2.07.2012, 16:10:37
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Witam
Mam problem którego nie potrafię logicznie rozwiązać

do przycinania dł. stringu używam czegoś takiego
  1. echo mb_substr(strip_tags($dane['tresc']), 0,205,'UTF-8');


problem mam jednak z tym że ucinam niekiedy wyrazy.
i treśc brzmi mniej wiecej tak.

  1. [...] TO JEST TRE <--- jak widać brakuje ŚĆ


Jak to zrobić by dokończyło wyraz lub go wcale nie wypisywało. sad.gif
Go to the top of the page
+Quote Post
Shido
post 2.07.2012, 17:31:01
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Gdzieś było to już na forum i to stosunkowo niedawno, ale nie chce mi się tego szukać.
Ja bym to zrobił w taki sposób:
  1. $a = mb_substr(strip_tags($dane['tresc']), 0,205,'UTF-8');
  2. $b = explode(' ', $a);
  3. echo substr($a, 0, -(strlen(end($b))+1));

Nie testowałem, więc nawet nie wiem czy działa tongue.gif
W teorii powinno wynik tego co uzyskasz rozbić na wyrazy ( po spacji ), następnie odwołać się do ostatniego elementu tablicy ( uciętego wyrazu ), zliczyć jego długość dodać do długości 1 ( spacja ) i o tyle uciąć z całości.


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
usb2.0
post 2.07.2012, 18:22:12
Post #3





Grupa: Zarejestrowani
Postów: 341
Pomógł: 25
Dołączył: 28.09.2008
Skąd: Lublin

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


no generalnie należy chyba z explode skorzystać i wyświetlić ile tam sobie chcesz i dodać na końcu porządane "3 kropki" smile.gif
Go to the top of the page
+Quote Post
irmidjusz
post 3.07.2012, 22:49:57
Post #4





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


A wordwrap nie daje rady z tym zadaniem?


--------------------
there is much to be learned
Go to the top of the page
+Quote Post
thek
post 4.07.2012, 08:05:45
Post #5





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




A czemu nie skorzystasz z... wyszukiwania ostatniego (strrpos) i pierwszego (strpos) wystąpienia spacji? wink.gif
1. Tniesz ciąg, to zapewne pozbywasz się wszelkich pozbywasz się wszelkich formatowań wpierw. Masz więc plain-text.
2. Tniesz go do wymaganej długości.
3. Sprawdzasz czy w uciętym kawałku ostatni znak to spacja lub przesuwasz offset na długość i sprawdzasz czy pierwszy znak to spacja. Obrazowo to pokażę z | jako miejscem trafienia cięcia:
jakiś |tekst
jakiś| tekst
W obu wypadkach masz wtedy spokój i możesz bez problemu ciąć (w pierwszym możesz jeszcze zrobić rtrim).
4. Jeśli trafisz w sytuację, gdy obie liczby wskażą, iż przeciąłeś gdzieś w środku wyrazu, szukasz ostatniego wystąpienia spacji w odciętym kawałku i ów kawałek od początku do wskazanego miejsca bierzesz.

Nie bawisz się w takiej sytuacji w explode, liczenie i inne cuda. Ale zwróć uwagę, że to jest rozwiązanie gdy nie masz tagów. Jeśli chcesz zachować formatowanie html, to musisz się ładnie pobawić z tym, by zachował strukturę wyciętych tagów i tu już jest trochę zabawy, aczkolwiek są gotowce w sieci jak to zrobić.


--------------------
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

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: 28.06.2025 - 16:42