Autor Zpráva
lachim15
Profil
Zdravím,
Mám jednoduchý chat (přepracovaný shoutbox), který je propojený s databází. Chtěl bych se zeptat, jestli jde v php nějak udělat, aby to rozeznávalo BB kódy a když to nějak půjde, omezit, aby fungovaly jen některé z nich?

díky za odpovědi :)
nemeja
Profil
Koukni se na funkci preg_replace a potom Regulární výrazy
lachim15
Profil
Díky za tip, po vánocích, jak bude víc času se na to zaměřím a zkusím něco udělat :)
Kcko
Profil
Nahrazení na bold

    $string = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $string);
+ zbytek je velmi podobný

odkazy (od DGX)

function shortenLinksCallback($match) {
    return "<a href='$match[0]'>" . preg_replace(
        '~(.{40}[a-z0-9]*.).{10,}([^a-z0-9;].*.{10,})~i',
        '\\1…\\2',
        $match[0]
    ) . "</a>";
}

function shortenLinks($text) {
    static $chars = "][;#%&+./0-9:=?a-z_~-";
    return preg_replace_callback(
        "(\\bhttps?://[$chars]+\\.[$chars]*[][+/0-9=a-z_~;])i",
        'shortenLinksCallback',
        $text
    );
}


A pro srandu, nahrazování obrázků, odkazů na ČSFD a videa na Youtube


        
        $pattern[]="/\[img\](http[s]*:\/\/[^<> \n\r\[\]&]+?\.(gif|jpg|jpeg|png))\[\/img\]/i";
        //$replacement[]='<a href="\\1" target="_blank"><img src="\\1" alt="" title="" /></a>';
        $replacement[] = "<a href='x!x$1' class=\"colorbox\"><img style='max-width: 100%' src='x!x$1'></a>";
       
        $pattern[]="/\[imgcsfd\](http[s]*:\/\/[^<> \n\r\[\]&]+?\.(gif|jpg|jpeg|png))\[\/imgcsfd\]/i";
        //$replacement[]='<a href="\\1" target="_blank"><img src="\\1" alt="" title="" /></a>';
            $replacement[] = "<a href='x!x$1' class=\"colorbox\"><img style='max-width: 25%; float: left; margin-right: 5px;' src='x!x$1'></a>";



        $pattern[]="/\[imgyt\](http[s]*:\/\/[^<> \n\r\[\]&]+?\.(gif|jpg|jpeg|png))\[\/imgyt\]/i";
        //$replacement[]='<a href="\\1" target="_blank"><img src="\\1" alt="" title="" /></a>';
            $replacement[] = "<a href='x!x$1' class=\"colorbox\"><img style='max-width: 33.33%; float: left; margin-right: 5px;' src='x!x$1'></a>";



+ nápomocné funkce

public static function getCSFD($m)
    {

        $out = '';

        if (strpos($m[1], 'csfd') === FALSE)
            return $m[1];

        include_once 'library/simple_html_dom.php';
        $f = file_get_html($m[1]);

        $arr = array();
        $arr[0]  = '[imgcsfd]' . $f->find("#poster img", 0)->src . '[/imgcsfd]';
        $arr[]  = '.']' .trim( $f->find("#main h1", 0)->plaintext) . '';
        //$arr[]  = 'režie: ' . trim($f->find("#main .origin", 0)->next_sibling()->children(1)->plaintext) . '';
        $arr[]  = trim($f->find("#main .genre", 0)->plaintext);
        $arr[]  = trim($f->find("#main .origin", 0)->plaintext);
        $arr[]  = '' . trim($f->find("#rating", 0)->plaintext) . '';



        $out  = $arr[0];
        unset($arr[0]);
        $out .= implode(", ", $arr) . "<div class='cl'></div>";


        return $out;


    }


    public static function getYT($m)
    {
        $xurl = str_replace('[yt]', '', $m[0]);
        $xurl = str_replace('[/yt]', '', $xurl);
        $arr = array();
        $arr[0]  = '[imgyt].'/2.jpg[/imgyt].'/2.jpg[/imgyt]http://img.youtube.com/vi/'.$m[2].'/2.jpg[/imgyt]';
        
        $out = '';

        $url           = "http://gdata.youtube.com/feeds/api/videos/" . $m[2];
        $doc           = simplexml_load_file($url);
        
        $media         = $doc->children('http://search.yahoo.com/mrss/');
        $yt            = $media->children('http://gdata.youtube.com/schemas/2007');
        $attr1         = $media->group->thumbnail[0]->attributes();
        $thumbnail     = $attr1['url'];
        $attr2         = $yt->duration->attributes();
        $length        = $attr2['seconds'];
        $videoDuration = floor($length/60) . ":" . str_pad($length % 60, 2, 0, STR_PAD_LEFT);

        $out  = $arr[0];
        unset($arr[0]);
        $arr[]  = '' .$doc->title. '';
        $arr[]  = (string) $doc->category[1]['label'];
        $arr[]  = $videoDuration;
        $out .= implode(", ", $arr) . "<div class='cl'></div>";


        return $out; 


    }
lachim15
Profil
Díky za další funkce, taky na ně mrknu :)
lachim15
Profil
Funguje parádně super ! :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: