Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Fragment tekstu do pierwszej spacji...
Forum PHP.pl > Forum > PHP
k0b3
Stosuje funkcje PHP do skracania wyrazów na stronie. Np.

  1. <?php
  2. substr($zmienna, 0, 16)
  3. ?>


Czy jest jakiś algorytm, który ucinał by zdanie dopiero po pierwszej lub po drugiej spacji. Poprostu ładniej by wyglądało..

Mam tak:

Zdanie prób...

a chce np.

Zdanie próbne....

Jest taka możliwość?

Z góry dziękuje za pomoc
bełdzio
strpos i jedziesz smile.gif
em1X
  1. <?php
  2. /**
  3. * Ucina tekst po wystapieniu okreslonej
  4. * ilosci spacji.
  5. * @param $string Pełny tekst
  6. * @param $spaces Po ilu spacjach ciąć tekst
  7. * @param $after Tekst do doklejenia po cięciu
  8. *
  9. * @return Ucięty tekst
  10. * **/
  11. function & shortCut(& $string, $spaces, $after = '...')
  12. {
  13. $spacer = ' ';
  14. $arrSize = explode($spacer, $string);
  15. $count = 0;
  16.  
  17. if (count($arrSize) == 0 || count($arrSize) - 1 <= $spaces)
  18. return $string;
  19.  
  20. for ($i=0; $i<$spaces + 1; $i++)
  21. $count += strlen($arrSize[$i]);
  22.  
  23. return substr($string, 0, strpos($string, $spacer, $count)) . $after;
  24. }
  25.  
  26. $str = "to jest hello world";
  27.  
  28. // utnij tekst po dwóch spacjach
  29. print shortCut($str, 2);
  30. ?>
k0b3
Super! Wielkie dzięki za pomoc, ale chciałem jeszcze zapytać. Czy jest taka możliwość (przerabiając np ten kod), żeby spełniało taką funkcje:

Mam skrypt zintegrowany z forum, tak więc bbcode przy pisaniu newsa również jest. np [ b]

Chciałbym, aby rozpoznawało pierwsze pogrubienie i tylko je wyświetlało. Podobnie jak ze spacjami...

np.:

[b ]To jest nagłówek wiadomości! [ /b]
A tu juz, ciąg dalszy jakiegoś tekstu..

chce aby wyświetlało tylko tekst między pierwszymi znacznikami

ps.
[b ] pisze ze spacją zeby się wyświetliło smile.gif
pozdr
misiek172
jeśli chodzi o te spacje to to jest bez sensu bo wyrazu mogą mieć rózne długości, lepiej niech ucina po wystąpieniu odpowiedniej ilości znaków i dodaje - i przenosi do drugiej linijki, efekt będzie taki:

ble ble i dłu-
gi wyraz się
przeniósł wi-
ęc tak już je-
st smile.gif
k0b3
przewidziałem to, ale w moim problemie, okreslona ilość spacji pasuje... smile.gif

To da się z Tymi [b ] ?
Łukasz O.
gorzej jak czcionka ma zmienną szerokość znaków:P wtedy dupa bo WWW jest szersze od III - kobemat - spójrz na funkcje z rodziny preg_*
em1X
Cytat(kobemat @ 23.03.2007, 13:53:54 ) *
przewidziałem to, ale w moim problemie, okreslona ilość spacji pasuje... smile.gif

To da się z Tymi [b ] ?


z chęcią ale nie bardzo rozumiem problemu...
k0b3
Hmm... no to tak:
Integorwałem newsy z forum phpBB ze stroną i mam coś takiego:

To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst.
To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst. To jest tekst.

Czytaj dalej...


W jakimś dziale na stronie mam wyrzucane rekordy z nowymi newsami.

Chce zrobić tak, aby w tym dziale były tylko nagłówki wiadomości, a nagłówkami jest tekst pomiędzy znacznikami [ b] [/b ]

To jest chyba podobny problem jak ze sapacjami...

Pozdrawiam
bronchos
Z głowy, wiec nie jestem pewien, czy będzie wszystko OK:

$naglowek = preg_replace('/^(<b>.*?<\/b>).*/s','\\1',$pelnyTekst);
k0b3
treść jest formatowana poprzez bbcode, wiec nie ma znaczników <br>, natomisat jest [b], tak więc zmieniłem je...

i nic się nie dzieje...

/// EDIT...

za szybko napisałem, w/w działa... nie trzeba nic zmieniac jednak...

pozdrtawiam, i dziękuje winksmiley.jpg)
bronchos
Nie ma problemu. Jeśli natomiast chciałbyś wykrywać [b], to należy to zapisac jako: \[b\], a nie: [b].
W przypadku drugiego zapisu preg będzie traktował [b] jako klasę znaków zawierającą tylko 'b', zaś w pierwszym jako ciąg znaków '[b]';
k0b3
Hej.. znów wracam do podobnego tematu...

mam jakis tekst:

tojesttekst&xxxxxxx

chce zeby jakas funkcja wycinala mi tekst do znaku "&", czyli:

tojesttekst

pewnie sie da... smile.gif


////////////////////////////////////////////
aj juz mam... sorki za klopot...

identycznie jak ze spacja ;P
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.