Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie z tekstu pierwszego akapitu
Forum PHP.pl > Forum > PHP
pawel0520
Witam,

chciałbym z tekstu wyodrębnić pierwszy akapit.

obecnie mam takie intro, które wyświetla 100 pierwszych znaków:

  1. $tresc = cutWords($row['intro'], 100, true). '...';


Próbowałem robić to tak:
  1. $podzial = explode("<br>", $row['intro']);
  2. $tresc = $podzial[0];


Owszem, wszystko dobrze dzieli, ale tekst pojawia się w innym miejscu i wszystko się zlewa ze sobą.

W bazie danych treść jest zapisywana w taki sposób:

Cytat
<div>Po cożbym ja teraz spolszczone szanownej. Publiczności jako zaszczyty względne a im więcej potrzeb coraz więcej nad trzy pojęcia o cnocie i kary od kary. Więc ja istnieję dla tego o Dobru jest też nie czyni, ale świat są przyjemne, a tu będzie niespokojny. </div><div><br></div><div>Wzór lub oddzielnego zarodku do czego mądrość i cały świat są dolegliwości nam się popełniło. Takie ...


Czyli akapit w div -> <br> w div -> następny akapit w div.

Da się jakoś rozwiązać mój problem?

Pozdrawiam.
b4rt3kk
Może użyj preg_match?

  1. preg_match('#<div>(.*)<\/div>#', $tresc, $matches);


Wyrażenie regularne jest tu tylko przykładowe. Musisz napisać odpowiednie. Wynik będzie w tablicy $matches.
pawel0520
Jest jakiś prostszy sposób? może przez walidację?

Pozdrawiam.

ps: od razu mówię, że nie jetem zbyt biegły w php. po prostu ktoś mi powiedział, że walidacja może być ok. może to co kolega podał wyżej jest walidacją, ale wydaje mi się skomplikowane.

Pozdr.
erix
strpos na zamykającego diva przecież wystarczy.

Poza tym, dlaczego nie użyjesz strip_tags i z tego zrobisz zajawkę?
pawel0520
  1. $pos = strpos($row['intro'], "a");
  2. $tresc = cutWords($row['intro'], $pos, true);


Przy tak skonstruowanej funkcji wszystko jest ok. Ucina za "a". Jednak działa to tylko przy jednym znaku. W ogóle nie wiem jak to mam ustawić żeby ucinało po akapicie. Próbowałem kombinować ze "/", ale bez efektów.

Pozdrawiam.

Poradziłem sobie już z tym problemem. Mam jednak trochę inny. Kiedy wyświetla mi się cała treść tekstu, chciałbym, aby pierwszy akapit był pogrubiony. Mogę zrobić to tak samo jak z poprzednim problemem, ale wyświetli mi się pierwszy akapit (pogrubiony) i resztę tekstu zawierającego również ten akapit.

Mam taki kod php do wyświetlenia artykułu:

  1. return $artykul . '<div class="artykul_intro">'.stripslashes(str_replace(array('%5C','%22'), array('',''), $row['text'])).'</div>';


I artykuł wyświetla się w taki sposób, że każdy akapit jest w osobnym divie.

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