| | |
| Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
Autor | Správa |
---|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal Flety: 26.11.2008 14:15 | |
|
Čavte, mám dve otázky/probémy:
1; Používam jednuché BB tagy a systém na ich zámenu za HTML (nie tento http://www.pcforum.sk/uzitocne-a-casto- ... tml#425092 - vytvoril som si vlastný) Problém je v tom, že niekedy potrebujem orezať text a stáva sa že text vyzerá asi takto: Kód: [b]Dlhší text, napríklad 100slov[/b] Ja to ale potrebujem vypísať tak aby mi ukázalo len 50slov a tým pádom ostane tag [b], resp. <b> otvorený(výsledok: Kód: [b]Dhlší text, napríklad 50... ) a všetko je potom hrubé aj to čo nemá byť. Teda ako to automaticky uzavriem pri výpise?
2; Druhá vec je ako urobiť aby mi v tagu [code] nemenilo ostatné tagy, teda tak ako je to napr teraz aj v tomto príspevku vyššie
Vopred vďaka
|
|
Registrovaný: 09.09.07 Prihlásený: 07.11.16 Príspevky: 3114 Témy: 233 Bydlisko: Nové Zámky |
daj sem tvoj script na tu zamenu...
asi zle zamienas tie tagy
_________________ "It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď |
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 26.11.2008 15:12 | |
|
Zle si pochopil ja sa nesťažujem , že mi to nejde, ja sa sťažujem, že neviem ako to urobiť prečítaj si to ešte raz
|
|
Registrovaný: 30.05.06 Prihlásený: 28.06.15 Príspevky: 2278 Témy: 45 Bydlisko: ZA |
vytiahni si pomocou regexpu samotny text a iba ten skrat
|
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 26.11.2008 15:14 | |
|
Nechápem
|
|
Registrovaný: 30.05.06 Prihlásený: 28.06.15 Príspevky: 2278 Témy: 45 Bydlisko: ZA |
v php nerobim, ale napadlo ma to asi tak, ze nahradis cely string takto
'[b]blablablaaablaaaa[\b]' -> <font>blabla</font>
teda v kode
/\[b\](.+?)\[\/b\]/ -> skratis $1 -> '<font class="xxx">($1)</font>'
narychlo nacmarane...
|
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 26.11.2008 15:31 | |
|
Až na to, že niekedy tam ten BB tag vôbec nieje a niekedy ich je 5 a nie len <font>, či [b]
|
|
Registrovaný: 30.05.06 Prihlásený: 28.06.15 Príspevky: 2278 Témy: 45 Bydlisko: ZA |
tak si spravis pre kazdy bbtag samostatny regexp a das to do podmienky kde bude osetreny aj pripad, ze sa tam ziadny bbtag nenachadza:-D
|
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 26.11.2008 15:37 | |
|
Sry, ale regexp neovládam a na php.net nemôžem nájsť túto funkciu
//EDIT: Spravil som to inak, síce trošku lamersky, a nie podľa štandardov ale nevadí
|
|
Registrovaný: 30.05.06 Prihlásený: 28.06.15 Príspevky: 2278 Témy: 45 Bydlisko: ZA | |
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 |
Ja (by) som to riešil tak, že po ozeraní premeníš BB Code na html a potom už len odstrániť všetky výrazy v texte ako [b], [u] a pod. ktoré nemajú pár ([i] bez [/ i]...).
Kód: [b]Toto [u]bude[/u] veľmi dlhý text, ktorý nevyhovuje tvojej podmienke.[/b] Orežeš: Kód: [b]Toto [u]bude[/u] veľmi dlhý text, ktorý nevy Zmeníš na html (iba párové): Kód: [b]Toto <u>bude</u> veľmi dlhý text, ktorý nevy Odstrániš nadbytočné BBCode: Kód: Toto <u>bude</u> veľmi dlhý text, ktorý nevy
|
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 28.11.2008 19:59 | |
|
A ako zistím, čo je párove, resp. ako to odstrániť?
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 |
Priamo funkcia uvedená v téme Užitočné a často používané skripty je funkcia na BBCode a tam sa to dá v podstate vidieť:
Kód: function bbcode($str) { $BBCode = array("/\[b\](.*)\[\/b\]/is", "/\[u\](.*)\[\/u\]/is", "/\[i\](.*)\[\/i\]/is", "/\[url\=(.*?)\](.*?)\[\/url\]/is"); $BBTag = array("<strong>$1</strong>", "<u>$1</u>", "<i>$1</i>", "<a href=\"$1\" target=\"_blank\" rel=\"nofollow\">$2</a>");
$str = preg_replace($BBCode, $BBTag, $str); return $str; } Konkrétny príklad na preg_replace: Kód: $mojtext = 'Ahoj [b]svet[/b] môj [b]prenádherný'; $text = preg_replace('/\[b\](.*)\[\/b\]/is', '<b>$1</b>', $mojtext); Výsledok: Kód: Ahoj <b>svet</b> môj [b]prenádherný Následne nadbytočné BBCode odstrániš pomocou str_replace: Kód: $text = str_replace('[b]', '', $text); $text = str_replace('[/b]', '', $text);
|
|
| Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|