Kako očistiti tekst od nepoželjnih tagova i skratiti ga po potrebi - tutorijal

2

Kako očistiti tekst od nepoželjnih tagova i skratiti ga po potrebi - tutorijal

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3745
  • Gde živiš: 127.0.0.1

[offtopic]Izmenih prethodnu poruku da dodam implementaciju cutout f-je.[/offtopic]

Inace, kad hoces da ispravis nekoga, navedi gde je greska. To da li ja tebe razumem ili ne je manje - vise nebitno. Postoje i ostali clanovi, ili slucajni posetioci, koji ipak nemaju (dovoljno) iskustva u PHP-u i zbog kojih se i pise malo duze objasnjenje, kao sto i ja napisah iznad. Dakle - nije napisano protiv tebe - nego u korist ostalih.

Cak i da ti poveruju na rec - nece znati u cemu je problem, vec da samo postoji Wink

Inace - problem je u mojoj (pogresnoj) pretpostavci da ako se treci parametar mb_substr() f-je setuje null, "odsecanje" ide do kraja stringa. Pravilno bi bilo:

function utf8_ucfirst($string) {         return mb_strtoupper(mb_substr($string, 0, 1, 'UTF-8'), 'UTF-8'). mb_substr($string, 1,  mb_strlen($string, 'UTF-8') - 1, 'UTF-8'); }



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • arnage 
  • Novi MyCity građanin
  • Pridružio: 13 Feb 2013
  • Poruke: 16

Slazem se i izvinjavam se i moji postovi obicno jesu takvi, sto ces videti ako se budem zadrzavao ovde, ali veceras sam morao odmah da krenem po sestricu.
Neki ludak zadavio svoju devojku ovde na Medaku pa smo se svi isprepadali...

Sto se tice:
function mb_cutout($str, $len, $etc = '...')  {     if (mb_strlen($str) <= $len || mb_strpos($str,' ',$len) > mb_strlen($str))     {        return $str;     }     else     {        return mb_substr($str, 0, mb_strpos($str,' ',$len)) . ($etc ? $etc : '');     }  }  
posto si vec zadao $etc = '...' ternary ($etc ? $etc : '') bas i nije potreban, a svrha ovoga:
function cutout($string, $howmuch, $etc = false) {      return mb_strlen($string, 'UTF-8') > $howmuch       ? mb_substr($string, 0, $howmuch, 'UTF-8').($etc !== false ? '...' : '')      : $string;  }
... je da moze da se koristi i sa tri tacke kada se $etc stavi true,
cutout($string, 30, true);  
ili bez te tri tacke kada se $etc ignorise.
cutout($string, 30);  
Ali svidja mi se ideja sa mb_strpos() Smile , i dao si mi neku ideju ali ne mogu da probam jer trenutno nesto nije u redu sa mojim hostom.

I jeste ovo se svodi na ovo, ono se svodi na ono, u php se na par nacina moze doci do iste stvari, to i jeste zabavno. Nego, ne bih se nastavljao dalje u offtopic jer ti imas opciju za ban, a ja je ovde nemam. Very Happy



offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3745
  • Gde živiš: 127.0.0.1

[offtopic]Da bi neko od urednika iskoristio tu opciju - neslaganje treba da postoji sa Pravilnikom, a ne nekim od moderatora. Mi smo tu da diskusiju vodimo normalnim tokom, a ne da kaznjavano one koje misle drugacije.[/offtopic]

Ideja iza $etc-a kod mene je u sustini slicna tvojoj - samo sto ti daje mogucnost da sam setujes cime nastavljas isecen pasus. Ako ne stavis nista - to su tri tacke. Mozes da stavis i "read more" ili nesto tome slicno, a mozes i false ako neces nikakav nastavak. U sustini, malcice razlicita implementacija, ali se na kraju svodi na isto. I sam rece - lepota PHP-a je u tome.

Inace - sad mi pade na pamet - nijedan nije "pocistio" html tagove koji (mozda) postoje unutar stringa za secenje, a koji mogu da daju rsum da naprave ako cutout f-ja odsece zatvaranje taga.

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

cvrlebg ::Hvala za funkciju za čišćenje teksta.

Evo jednog jednostavnog saveta za skraćivanje teksta, PHP u svojoj biblioteci ima funkciju koja se zove substr_replace (link: http://php.net/manual/en/function.substr-replace.php), koja može veoma lako da skrati tekst.

substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] );

Što u praksi izgleda ovako:

echo substr_replace("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras tincidunt aliquam magna id gravida. Nulla facilisi. Morbi suscipit sagittis enim lobortis commodo. Aenean sagittis volutpat rutrum. Duis ante neque, consectetur eget fringilla ut, suscipit eget quam. Suspendisse arcu risus, aliquam quis gravida sit amet, euismod quis libero. Ut pretium pulvinar molestie. Nam aliquet ultrices nulla in porta. Vestibulum ut purus vitae orci congue vestibulum. Etiam eget enim ac nisl malesuada ultrices nec in dolor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas..", "...", 100)

Rezultat:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras tincidunt aliquam magna id gravida. Nu...


Sad sam probao ovu funkciju i imam problem sa njom da svugde imam 3 tačke kada izlistavam sadržaj. U mojoj PHP funkciji tamo gde je tekst kraći od na primer 100 od karaktera se ne pojavljuju 3 tačke. Nije ovo izmišljanje tole vode ali ume biti korisnije od PHP ovih funkcija i koristim ih.

Ko je trenutno na forumu
 

Ukupno su 1329 korisnika na forumu :: 52 registrovanih, 9 sakrivenih i 1268 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: -[CoA]-, A.R.Chafee.Jr., Acivi, aramis s, babaroga, Bobrock1, bojankrstc, Brana01, Bubimir, cifra, comi_pfc, darcaud, DENIRO, Dimitrije Paunovic, Dimitrise93, Djokkinen, Doca, doktor1964, DonRumataEstorski, Fabius, Georgius, HogarStrashni, hyla, ILGromovnik, kalens021, krkalon, kunktator, kybonacci, Lieutenant, ljubacv, Metanoja, milenko crazy north, Miroljub1979, Mixelotti, nemkea71, nenooo, raptorsi, ruma, sabros, Sančo, sap, slonic_tonic, Smajser, Smd, srbijaiznadsvega, stalja, suton, taz1cl, tmanda323, Trpe Grozni, uruk, voja64