Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System newsów - automatyczne skracanie newsa, Ale tak, żeby nie ciął tagów HTML/BBCode
MatheW
post 28.06.2006, 08:22:08
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 29.05.2006
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Piszę system newsów i chcę by gdy news wyświetlany był na stronie głównej, to był ucinany - powiedzmy po 400 znakach, ale tak, żeby nie ciął w połowie znaczników HTML lub BBCODE. Bo przypuśćmy, ze w okolicach 400 znaków będzie takie oto coś -
Cytat
costam costam <a href //ciach - 400 znak// ="costam.html">
To wtedy w fragmencie na stronie głównej będziemy mieli costam costam <a href , co oczywiscie nie jest dopuszczalne.

Nie mam pomysłu jak sie za to zabrać. Czy może ktoś z Was mi pomóc, naprowadzić na rozwiązanie?


--------------------
[gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
popo
post 28.06.2006, 16:56:27
Post #2





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 15.07.2005

Ostrzeżenie: (0%)
-----


proponuje uzyc wyrazen regularnych (cos mi swita ze na forum bylo to juz omawiane ale nie mam pewnosci)
Go to the top of the page
+Quote Post
MatheW
post 28.06.2006, 18:54:38
Post #3





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 29.05.2006
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Nie moglem znaleść.. ale poradziłem sobie z samymi znacznikami i ucinam w dobrym miejscu. Natomiast mam teraz inny algorytmiczny kłopot.

Chciałbym, aby ten news był ucinany po 600 znakach, ale takich, które będą widoczne dla uzytkowniika czyli bez tagów. Oczywiście można zrobić strip_tags i tagów nie ma, wtedy policzy sie znaki i zwróci miejsce w ciągu, w którym winno się uciąć. No mamy pozycję, ale samych słów, bez tagów. Jak zrobić tak, zeby po 600 znakach tekstu, ale żeby wepchać tam tagi?


--------------------
[gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
Go to the top of the page
+Quote Post
Yacho
post 29.06.2006, 01:50:56
Post #4





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


wyrazeniem regularnym lapiesz wszystkie tagi do 600 znaku, po rym sprawdzasz ilosc znakow w "wylapanych tagach..." i tniesz tekst po 600+ ilosc wypalanych....
ja jednak zrobilbym znacznik [CUT] ktory user moglby sam ustawic gdzie by chcil i okreslil jego domyslna pozycje po x znakach...

inny sposob mi wpadl do glowy wlasnie :

w pierwszych 600 znakach matchujesz znaki alfanumeryczne + interpunkcje + kropki (czyli 1 slowem tekst) zwracasz sobie dlugosc tego tekstu jesli jest mniejza od 600 to tniesz po 600 + tyle ile mniejsza lub po 600 + miejsce do taga konczacego


--------------------
-=Yacho=-

nospor -> trzymaj sie i nie dajcie sie !
Go to the top of the page
+Quote Post
blackjohn
post 7.05.2008, 08:54:23
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.03.2006
Skąd: Częśtochowa

Ostrzeżenie: (0%)
-----


Witam. Mam dokładnie ten sam problem ale nie jestem zbyt zaawansowanym programistą w PHP. Czy mógł by ktoś napisać lup podać namiary na taki skrypt który wyświetli mi po wiedzmy 200 znakowy text nie uwzględniając tagów html? Będe dozgonnie wdzięczny.
Go to the top of the page
+Quote Post
Pilsener
post 7.05.2008, 15:31:09
Post #6





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Lepiej skracać do całych słów:
  1. <?php
  2. function skracaj_text($str, $limit = 100, $end_char = '…') {
  3.  if (trim($str) == '')
  4. return $str;
  5. preg_match('/s*(?:S*s*){'. (int) $limit .'}/', $str, $matches);
  6. if (strlen($matches[0]) == strlen($str))
  7. $end_char = '';
  8.  return rtrim($matches[0]) . $end_char;
  9.  }
  10. ?>
- znalazłem w manualu. Jak ktoś chce może przerobić, żeby liczyć znaki zamiast słów.

Ten post edytował Pilsener 7.05.2008, 15:31:51
Go to the top of the page
+Quote Post
MWL
post 7.05.2008, 15:53:02
Post #7





Grupa: Zarejestrowani
Postów: 493
Pomógł: 32
Dołączył: 14.04.2008
Skąd: Lenkowski.net

Ostrzeżenie: (0%)
-----


A ja dam prostszą metodę, może można się pozbyć znaków html'a??
Nie sadzę by w skrócie było to nie wiadomo jak potrzebne...


--------------------
Wpadaj na mój kanał o PHP. Dużo mięsa 🥩!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:44