Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PHP i BBcode, problematicno ispisivanje

[es] :: PHP :: PHP i BBcode, problematicno ispisivanje

[ Pregleda: 2512 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BodaTajson
student
Novi Sad

Član broj: 72752
Poruke: 18
*.dynamic.sbb.co.yu.



Profil

icon PHP i BBcode, problematicno ispisivanje17.02.2007. u 20:20 - pre 209 meseci
Da izlozim problem :)

iz baze phpbb foruma ovako iscitavam jedan post

Code:

$sqlUpitSR="SELECT post_text FROM phpbb_posts_text WHERE post_id=7525";
$podaciSR=mysql_fetch_array($sr);


a zatim ga ispisujem na stranici pomocu:
Code:
<?=$podaciSR["post_text"]?>



problem je sto tekst koji bi treba da izgleda ovako >>



blablabla.

petak 16. februar
Blablablabla.




dobijem u ovom obliku >>


[i:69f56c80cf]blablabla.[/i:69f56c80cf][b:69f56c80cf]petak 16. februar[/b:69f56c80cf]Blablabla.



da li drugacije citati te podatke iz baze? mysql_fetch_...? ustvari, kako restiti problem? :)


 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
194.106.174.*

Sajt: https://avramovic.info


+46 Profil

icon Re: PHP i BBcode, problematicno ispisivanje17.02.2007. u 21:23 - pre 209 meseci
Pa pravi problem je u tome što su podaci verovatno u bazi upisani kao "[i:69f56c80cf]blablabla.[/i:69f56c80cf][b:69f56c80cf]petak 16. februar[/b:69f56c80cf]Blablabla."

Nađi način da ukloniš/izparsiraš taj bbcode
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

BodaTajson
student
Novi Sad

Član broj: 72752
Poruke: 18
*.dynamic.sbb.co.yu.



Profil

icon Re: PHP i BBcode, problematicno ispisivanje18.02.2007. u 11:05 - pre 209 meseci
Pokusao sam nesto i delimicno uspeo. Posto je bold predstavljen [b:69f56c80cf] i [/b:69f56c80cf] stavio sam ta dva elementa u niz. Zatim pretrazivanjem mog teksta, umesto njih redom ispisuje clanove drugog niza gde sam stavio <span style="font-weight:bold"> i </span>. To radi ok dok ne editujem post na forumu jer pri svakom editovanju tog posta onaj broj 69f56c80... se promeni.

Sad pokusavam da rasclanim na 4 clana, s tim da su drugi i cetvrti promenljivi i da njih hocu da zamenim sa praznim stringom tj. ' '

[b: 69f56c80cf] [/b: 69f56c80cf]

Kako da odradim pretragu teksta tj. kako da posle [b: pretrazim tekst do prvog ] znaka. Moze li se 69f56c80cf] predstaviti kao *.] ili nesto slicno?

evo kako tacno izgleda:

Code:

<?php
    include "connect.php";
    $sqlUpitSR="SELECT post_text FROM phpbb_posts_text WHERE post_id=7525";
    $sqlUpitCG="SELECT post_text FROM phpbb_posts_text WHERE post_id=7477";
    if (!$sr=mysql_query($sqlUpitSR) OR !$cg=mysql_query($sqlUpitCG)) {
        echo "Podaci nisu dostupni" . mysql_error();
        die();
    }
    $podaciSR=mysql_fetch_array($sr);
    $podaciCG=mysql_fetch_array($cg);
        
    function Parse($bbcode) { 
        $bbc_a=array('[b:69f56c80cf]','[/b:69f56c80cf]');                       //
        $bbc_b=array('<br><span style="font-weight:bold">','</span>');   //
        $bbc_num=count($bbc_a); 
        $loop=0; 
        while($loop<$bbc_num) { 
            $bbcode=str_replace($bbc_a[$loop], $bbc_b[$loop], $bbcode); 
            $loop++; 
        } 
        return $bbcode; 
    }
    
    $podaciSR=Parse($podaciSR);
    $podaciCG=Parse($podaciCG);
?>



Pomagajte :)
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
194.106.174.*

Sajt: https://avramovic.info


+46 Profil

icon Re: PHP i BBcode, problematicno ispisivanje18.02.2007. u 11:24 - pre 209 meseci
Pa može preko regularnih izraza. Najlakše:
Code:
preg_match_all('/[b:(.*)](.*)[\/b:(.*)]/',$bbcode,$matches);
print_r($matches);


Nisam probao ali ovo bi trebalo da vrši posao. Verovatno (ne verovatno nego sigurno) ovaj regularni izraz može preciznije da se definiše ali ja sam totalni početnik kad su regularni izrazi u pitanju
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

BodaTajson
student
Novi Sad

Član broj: 72752
Poruke: 18
*.dynamic.sbb.co.yu.



Profil

icon Re: PHP i BBcode, problematicno ispisivanje19.02.2007. u 13:03 - pre 209 meseci
ne mogu da se snadjem sa ovom sintaksom :(

[b:69f56c80cf] i [/b:69f56c80cf]

bitno mi je da je posle ovog prvog aktivan bold, a posle drugog da nije. Ne bih da npr. citam teskt izmedju njih pa ga ispisem vec bi da ga sacuvam formatiranog.



tekst ulazi u ovom obliku:

obican_tekst[b:69f56c80cf]ovde_treba_boldovano[/b:69f56c80cf]normalan_tekst...



Ovim pokusavam ali dobijam nepromenjen izlaz. Mozes li da mi kazes sta konkretno ne valja u $bbc_a? Sama funkcija radi tj. zameni stringove iz $bbc_a stringovima iz $bbc_b. Ako stavim $bbc_a=array('[b:69f56c80cf]','[/b:69f56c80cf]') odradice zamenu ali ovako nece >>

Code:

    function Parse($bbcode) {
        $bbc_a=array('/[b:(.*)]/','/[\/b:(.*)]/');
        $bbc_b=array('<span style="font-weight:bold">','</span>'); 
        $bbc_num=count($bbc_a); 
        $loop=0; 
        while($loop<$bbc_num) { 
            $bbcode=str_replace($bbc_a[$loop], $bbc_b[$loop], $bbcode); 
            $loop++; 
        } 
        return $bbcode; 
    }
    
    $podaciSR=Parse($podaciSR);
    $podaciCG=Parse($podaciCG);


 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
212.200.145.*

Sajt: https://avramovic.info


+46 Profil

icon Re: PHP i BBcode, problematicno ispisivanje19.02.2007. u 13:23 - pre 209 meseci
probaj preg_replace...
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: PHP i BBcode, problematicno ispisivanje19.02.2007. u 14:03 - pre 209 meseci
Citat:
Nemanja Avramović: Pa može preko regularnih izraza. Najlakše:
Code:
preg_match_all('/[b:(.*)](.*)[\/b:(.*)]/',$bbcode,$matches);
print_r($matches);


Nisam probao ali ovo bi trebalo da vrši posao. Verovatno (ne verovatno nego sigurno) ovaj regularni izraz može preciznije da se definiše ali ja sam totalni početnik kad su regularni izrazi u pitanju :)


Ovo gore neće raditi.

Karakteri "[" i "]" predstavljaju rezervisane karaktere, meta-karaktere.
Potrebno je backslash-ovati navedene karaktere.

Pa bi ovo gore trebalo da izgleda:
Code:

/\[b:(.*)\](.*)\[\/b:(.*)\]/U


Npr. jedno od rešenja je:
Code:

$pattern = '/\[((\w+):([\w\d]+))\](.+)\[\/\1\]/U';
$re = '<$2>$4</$2>';
$text = '[i:69f56c80cf]blablabla.[/i:69f56c80cf][b:69f56c80cf]petak 16. februar[/b:69f56c80cf]Blablabla.';
echo preg_replace($pattern, $re, $text);


Ovde gore može nastati problem jer korisnik može uneti bilo šta (npr. [div:123]asdf[/div:123]) i napraviti probleme u html kodu.

Jedno od rešenja ograničiti ono što će samo biti parsirano, npr samo "i" ili "b":
Code:

$pattern = '/\[(([ib]{1}):([\w\d]+))\](.+)\[\/\1\]/U';



E sada ukoliko želiš da imaš mogućnost da koristiš bb tagove jedan unutar drugog možeš napraviti rekurzivnu funkciju pomoću funkcije preg_replace_callback

Code:

$pattern = '/\[((\w+):([\w\d]+))\](.+)\[\/\1\]/U';
$text = '[i:69f56c80cf][b:69f56c80cf]blablabla.[/b:69f56c80cf][/i:69f56c80cf] [b:69f56c80cf]petak 16. februar[/b:69f56c80cf] Blablabla. [div:123]asdf[/div:123]';
function test($matches) {
  global $pattern, $text;
  if (is_array($matches)) {
    switch($matches[2]) {
      case 'i':
        $matches = '<span style="font-style: italic;">' . $matches[4] . '</span>';
      break;
      case 'b':
        $matches = '<span style="font-weight: bold;">' . $matches[4] . '</span>';
      break;
    }
  }
  return preg_replace_callback($pattern, 'test', $matches);
}
echo preg_replace_callback($pattern, 'test', $text);


Sve ovo moguće je i drugačije uraditi, možda sam nešto malo zakomplikovao ;). Moguće da ne prolazi neka kombinacija, ali možda posluži kao ideja.

Pozdrav.

[Ovu poruku je menjao Br@nkoR dana 19.02.2007. u 19:24 GMT+1]
Banned - Not available
 
Odgovor na temu

BodaTajson
student
Novi Sad

Član broj: 72752
Poruke: 18
*.dynamic.sbb.co.yu.



Profil

icon Re: PHP i BBcode, problematicno ispisivanje19.02.2007. u 15:35 - pre 209 meseci
hvala, hvala, hvala :)



ovo je ono sto mi je trebalo :))

Code:

$pattern = '/\[(([ibu]{1}):([\w\d]+))\](.+)\[\/\1\]/U';
$re = '<$2>$4</$2>';
$text = '[i:69f56c80cf]blablabla.[/i:69f56c80cf][b:69f56c80cf]petak 16. februar[/b:69f56c80cf]Blablabla.';
echo preg_replace($pattern, $re, $text);



hvala vam puno obojici! :)

 
Odgovor na temu

[es] :: PHP :: PHP i BBcode, problematicno ispisivanje

[ Pregleda: 2512 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.