Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Przycinanie stringu a koniec wyrazu
Forum PHP.pl > Forum > PHP
KotWButach
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
Shido
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.
usb2.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
irmidjusz
A wordwrap nie daje rady z tym zadaniem?
thek
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ć.
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.