Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 1 odgovor
  • 1.869 pregleda

Najnovija ↓

Problem sa parse-ovanjem forum post-ova 19.04.2009. u 04:13 · pre 213 meseci #1
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 :)
Potpis
Putuj planeto, super smo se družili
nama je lepo, taman kako smo zaslužili!
Re: Problem sa parse-ovanjem forum post-ova 19.04.2009. u 16:38 · pre 213 meseci #2
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... :)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme