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

Problem sa parse-ovanjem forum post-ova

[es] :: PHP :: Problem sa parse-ovanjem forum post-ova

[ Pregleda: 1397 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BytEfLUSh
Neven Pintarić
Nano-mage Engineer, Slave SysAdmin
Sombor

Član broj: 21153
Poruke: 5499
87.116.179.*



+14 Profil

icon Problem sa parse-ovanjem forum post-ova19.04.2009. u 03:13 - pre 182 meseci
E ovako... Imam svoj CMS koji inače radi savršeno... U pitanju je sajt koji postoji već godinama, sve je "ručno" pravljeno, doduše - sa ponekim "pozajmicama" (možda neko i prepozna). :)

Evo koda:

Code:
function CheckURL($text) {

    $start='(www\.|http://|https://|ftp://|irc://)';
    $url="[\w\?\~\-&=+;:%@#/,.]+[\w\?\~\-&=+;:%@#/]";
    $text=preg_replace_callback("~(?<!]|=|/|\")($start$url)~is", 'url_callback', $text);
    $text=preg_replace("~\[url(:nounderline)?=($url)](.+)\[/url]~iUs", '<a href="$2" target="_blank" rel="nofollow" $1>$3</a>', $text);
    $text=preg_replace("~:nounderline>~iUs", 'style="text-decoration:none">', $text);
    return $text;
}

function ForumParse($Text)
{
$Text = CheckURL($Text);
$Text = str_replace(array(':shit:',':g****:'), "<img src=\"smileys/shit.gif\" align=\"absmiddle\">", $Text);
$Text = str_replace(':cool:', "<img src=\"smileys/001_cool.gif\" align=\"absmiddle\">", $Text);
$Text = str_replace('xd', "<img src=\"smileys/xd.gif\" align=\"absmiddle\">", $Text);
// snip snip snip nebitno
return $Text;
}


E sada, problem je - recimo - kod YouTube linkova... Ako link sadrži xd, tu se generiše smajli i ode sve u... vražju mater :) .... Pogubi se ceo kod...
Odavno sam se posvađao sa reg exp, tako da ne mogu da skontam neko jednostavno rešenje za ovo... Ako neko ima ideju, dobrodošla je. Hvala unapred :)
Putuj planeto, super smo se družili
nama je lepo, taman kako smo zaslužili!
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Problem sa parse-ovanjem forum post-ova19.04.2009. u 15:38 - pre 182 meseci
Meni jedino za sada pada napamet da dodaš ovu liniju koda na kraj te druge f-je:
Code:

$text = preg_replace('/(<a\shref=".*)<img\ssrc=".+"\salign="[a-z]+"\salt="(.+)"\s?\/>(.*">.*)<img\ssrc=".+"\salign="[a-z]+"\salt="(.+)"\s?\/>(.*<\/a>)/uis', '\1\2\3\4\5', $text);

Znam da izgleda rogobatno, ali obavlja posao... :)

Taj reg exp bi radio povratan proces, odnosno, ako se u tom url-u našao neki kod za smajli, pa je bio zamenjen img tag-om, zameni taj ceo img tag za odgovarajući smajli... Naravno, ovaj moj regularan izraz podrazumeva da sve slike koje generišeš imaju alt tag (tako bi i trebao da radiš, da bi imao validan XHTML), u kojem bi se, u ovom tvom slučaju nalazio onaj izvorni oblik smajlija (npr. :), :D, xd, itd.), pa bi onda on bio uzet i stavljen umesto celog img tag-a... Takođe, taj img tag bi morao da bude i zatvoren (npr. <img src = "test.jpg" alt = "Test />). To je opet nešto što propisuje XHTML...

Verovatno postoji i neko elegantnije rešenje, odnosno neko koje bi osiguravalo da uopšte i ne dođe do te zamene smajlija sa slikom u slučaju url-a. Ali meni, za sada, samo ovo pada napamet... :)
 
Odgovor na temu

[es] :: PHP :: Problem sa parse-ovanjem forum post-ova

[ Pregleda: 1397 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

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