Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pokazanie na stronie tylko pierwszych XXX znaków zmiennej
Forum PHP.pl > Forum > PHP
gigabyte
Co zrobić, gdy pobieram dane z bazy MySQL (np zmienna $data), ale zmienna pobrana ma bardzo dużo znaków, a ja chcę wyświetlić na stronie tylko pierwszych kilkanaście.

Np
$data="To jest forum php.pl Najlepsze forum na świecie";

A ja chcę aby na stronie wyglądało to tak:
To jest forum...
scanner
Kod
<?php $text = 'Notoryczny wkładacz kija w mrowisko.'; $echo substr($text, 0, strpos(text, ' ', 14)); ?>
itsme
hmm moim zdaniem lepiej aby nie ciachal 14 liter lecz powiedzmy 3 wyrazy jest tez jakas funkcja na to lecz jestem w pracy a tu nie mam swoich pomocy sad.gif((

Pozdrawiam
scanner
Moj fragment nie obcina po 14 znakach, tylko szuka pierwszej napotkanej spacji po tychze 14 znakach.

Zeby wyswietlic konkretna liczbe wyrazow, mozna zrobic np. cos takiego:
Kod
<?

$text = 'Notoryczny wkładacz kija w mrowisko.';

$short = '';

$wyrazow = 2;

$startwyraz = 0;

$koniecwyraz = 0;



for($i=0; $i<$wyrazow; $i++){

  $koniecwyraz = strpos($text, ' ', $startwyraz);

  $short .= substr($text, $startwyraz, $koniecwyraz).' ';

  $startwyraz = $koniecwyraz;

}



echo $text.'<br>'.$short;

?>
itsme
rzeczywiscie .... kod z ze spacja po 14 znakach wydaje sie lepszy

pozdrawiam
gigabyte
Serdeczne dzięki. Pozdrawiam biggrin.gif
GeoS
Ja bym sugerowal ciachnac stringa z poziomu MySQLa.
Po co go pobierac calego i pozniej przycinac z poziomu php (obnizajac tym samym ogolna wydajnosc)questionmark.gif
scanner
Niewatpliwie cos w tym jest...
Ide poczytac manuala do MySQL.. ciekawe czy na cos sam trafie...
scanner
No, gajcy, musze przyznac, ze zajęło mi to całą godzinę przemysliwań. Właśnie skończyłem i spłodziłem coś takiego:
Kod
SELECT LEFT( tresc, IF(LENGTH(tresc)<500, LENGTH(tresc), LOCATE(' ', tresc, 500))) AS wpis

FROM news
Kod pobiera maxymalnie 500 znaków z pola tresc. Jeżeli w polu znaków jest więcej, przycina długość do pierwszej spacji wystepującej po 500-tnym znaku.
Trzeba uważać z np. LOCATE(co, gdzie, odkad) - jesli LENGTH(gdzie)<odkad dostaniemy pusty string. I właśnie zlokalizowanie tego zajęło mi większość czasu. Jakoś w manualu chyba zapomnieli o tym napisać, albo ja przeoczyłem.

A teraz pokornie czekam na info, że mozna to zrobić prościej smile.gif)
P.S. Do zapytania nalezaloby dodac LENGTH(tresc) AS znakow i następnie w php sprawdzić:
Kod
If($znakow > 500) { $wpis .= '<a href>wiecej</a>' }
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.