Wiem że może ten temat gdzieś już jest ale innych nie umiem zastosować.
niedawno zacząłem przygodę z php
chciałbym stworzyć własny system newsów (na stronie głównej).
Mam już panel, stronę do wyświetlnia.
Natomiast na stronie news.php (tu jest wyświetlana lista newsów) chciałbym ograniczyć ilość znaków wyświetlanej z treści newsa pobranego z MySQL
<?php
include("connect.php"); // 1
$query = mysql_query("select * from news order by id desc limit 0,10"); // 2
while($rekord = mysql_fetch_array($query))
{
$naz .= ''.$rekord[1].' Autor: '.$rekord[3].' - '.$rekord[2].''; // 3
}
echo '
‘.$naz.’
'; // 4 ?>[/code]
powyżej kod php pliku news.php
jak ograniczyć ilość wyświetlanych danych z rekordu 2?
próbowałem różnych metod ale nie poskutkowały.
Najlepiej by było żeby jeśli ilość znaków jest powyżej jakiejś ilości (jeszcze nie wiem bo nie napisałem cssa i nie wiem jak się ułoży) to żeby dodawało “…” a jeśli nie to żeby artykuł normalnie się skończył.
To nie takie proste. Powstaje problem niezamkniętych tagów i ucinania całych wyrazów substr to metoda “na chama”. Zacznij od szukania funkcji która podomyka tagi, a przycinającą już samemu można łatwo napisać.
Ja też na własną stronę musiałem trochę pokombinować. W moim przypadku zrezygnowałem z linków na głównej, kasując wszytko znajdujące się między znacznikami <>. Dało to całą treść, nie muszę się martwić o ucięte linki. Wtedy mogłem po prostu ucinać treść. Tu miałem kolejny problem, może uciąć wyraz w połowie co mało estetycznie wygląda. Dodatkowo przy ucinaniu czasami w końcach, gdzie były polskie znaki wyskakiwali jakieś krzaczki, (np. znak zapytania na czarnym tle). Kolejnym rozwiązaniem było zastosowanie ucinania tekstu powyżej 120 znaków, aż znajdzie spacje i dodać na końcu …
Usuwałem znaczniki poleceniem preg_replace, następnie obliczało się położenie spacji dalej niż 120 znak i ucinanie poleceniem substr do tej spacji.