Php + регульрка из html в bb code

Тема в разделе "Как сделать...", создана пользователем rasandrey, 2 мар 2012.

Статус темы:
Закрыта.
  1. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Приветствую!
    Помогите, плиз с такой функцией:

    Есть функция, которая переводить bb код в html, функция такая:

    PHP:
    function BbToHtml($str) {
        
    $str preg_replace("/\[b\](.+)\[\/b\]/Usi","<strong>\\1</strong>",$str);
        
    $str preg_replace("/\[i\](.+)\[\/i\]/Usi","<em>\\1</em>",$str);
        
    $str preg_replace("/\[u\](.+)\[\/u\]/Usi","<u>\\1</u>",$str);
        
    $str preg_replace("/\[s\](.+)\[\/s\]/Usi","<s>\\1</s>",$str);
        
    $str preg_replace("/\[img\](.*)\[\/img\]/Usi","<div style=\"text-align:center\"><img src=\"\\1\" border=\"0\" /></div>",$str);
        
    $str str_replace("[url=http://","[url=",$str) ;
        
    $str preg_replace("/\[url=(.*)\](.+)\[\/url\]/Usi","<a target=\"blank\" href=\"http://\\1\">\\2</a>",$str);
        
    $str str_replace("[yt=http://youtu.be/","[yt=http://www.youtube.com/embed/",$str) ;
        
    $str preg_replace("/\[yt=(.*)\]\[\/yt\]/Usi","<div style=\"text-align:center\"><iframe  width=\"560\" height=\"345\" src=\"\\1\" frameborder=\"0\" allowfullscreen></iframe></div>",$str);
        return 
    $str;
    }
    нужно сделать обратную функцию, т.е. из получившегося html сделать обратно BB code, максимум, что я осилил, это:

    PHP:
    function HtmlToBb($str) {
        
    $str zamena_str_nazad($str) ;
        
    $str preg_replace("/<strong>(.+)<\/strong>/Usi","[b]\\1[/b]",$str);
        
    $str preg_replace("/<em>(.+)<\/em>/Usi","[i]\\1[/i]",$str);
        
    $str preg_replace("/<u>(.+)<\/u>/Usi","[u]\\1[/u]",$str);
        
    $str preg_replace("/<s>(.+)<\/s>/Usi","[s]\\1[/s]",$str);
        
    //$str = preg_replace("/\[img\](.*)\[\/img\]/Usi","<div style=\"text-align:center\"><img src=\"\\1\" border=\"0\" /></div>",$str);
        //$str = str_replace("[url=http://","[url=",$str) ;
        //$str = preg_replace("/\[url=(.*)\](.+)\[\/url\]/Usi","<a target=\"blank\" href=\"http://\\1\">\\2</a>",$str);
        //$str = str_replace("[yt=http://youtu.be/","[yt=http://www.youtube.com/embed/",$str) ;
        //$str = preg_replace("/\[yt=(.*)\]\[\/yt\]/Usi","<div style=\"text-align:center\"><iframe  width=\"560\" height=\"345\" src=\"\\1\" frameborder=\"0\" allowfullscreen></iframe></div>",$str);
        
    return $str;
    }
     
  2. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Все, разобрался, кому нужны будут функции из bb в html или из html в bb, то 2 рабочие функции

    PHP:
    //перевод из BB кода в HTML
    function BbToHtml($str) {
        
    $str preg_replace("/\[b\](.+)\[\/b\]/Usi","<strong>\\1</strong>",$str);
        
    $str preg_replace("/\[i\](.+)\[\/i\]/Usi","<em>\\1</em>",$str);
        
    $str preg_replace("/\[u\](.+)\[\/u\]/Usi","<u>\\1</u>",$str);
        
    $str preg_replace("/\[s\](.+)\[\/s\]/Usi","<s>\\1</s>",$str);
        
    $str preg_replace("/\[img\](.*)\[\/img\]/Usi","<div style=\"text-align:center\"><img src=\"\\1\" border=\"0\" /></div>",$str);
        
    $str str_replace("[url=http://","[url=",$str) ;
        
    $str preg_replace("/\[url=(.*)\](.+)\[\/url\]/Usi","<a target=\"blank\" href=\"http://\\1\">\\2</a>",$str);
        
    $str str_replace("[yt=http://youtu.be/","[yt=http://www.youtube.com/embed/",$str) ;
        
    $str preg_replace("/\[yt=(.*)\]\[\/yt\]/Usi","<div style=\"text-align:center\"><iframe  width=\"560\" height=\"345\" src=\"\\1\" frameborder=\"0\" allowfullscreen></iframe></div>",$str);
        return 
    $str;
    }
    //*
     
    //перевод из HTML в BB код
    function HtmlToBb($str) {
        
    $str zamena_str_nazad($str) ;
        
    $str preg_replace("/<strong>(.+)<\/strong>/Usi","[b]\\1[/b]",$str);
        
    $str preg_replace("/<em>(.+)<\/em>/Usi","[i]\\1[/i]",$str);
        
    $str preg_replace("/<u>(.+)<\/u>/Usi","[u]\\1[/u]",$str);
        
    $str preg_replace("/<s>(.+)<\/s>/Usi","[s]\\1[/s]",$str);
        
    $str preg_replace("/<div style=\\\"text-align:center\\\"><img src=\\\"(.+)\\\" border=\\\"0\\\" \/><\/div>/Usi","[img]\\1[/img]",$str);
        
    $str preg_replace("/<a target=\\\"blank\\\" href=\\\"(.*)\\\">(.*)<\/a>/Usi","[url=\\1]\\2[/url]",$str);
        
    $str str_replace("[url=http://","[url=",$str) ;
        
    $str preg_replace("/<div style=\\\"text-align:center\\\"><iframe  width=\\\"560\\\" height=\\\"345\\\" src=\\\"(.*)\\\" frameborder=\\\"0\\\" allowfullscreen><\/iframe><\/div>/Usi","[yt=\\1][/yt]",$str);
        
    $str str_replace("[yt=http://youtu.be/","[yt=http://www.youtube.com/embed/",$str) ;
        return 
    $str;
    }
    //*
     
    Sunday нравится это.
  3. Dj_StelS

    Dj_StelS

    Регистр.:
    9 янв 2009
    Сообщения:
    349
    Симпатии:
    79
    PHP:
    function HtmlToBb($str) {
        
    $str preg_replace("/<strong>(.+)<\/strong>/Usi","[b]\\1[/b]",$str);
        
    $str preg_replace("/<em>(.+)<\/em>/Usi","[i]\\1[/i]",$str);
        
    $str preg_replace("/<u>(.+)<\/u>/Usi","[u]\\1[/u]",$str);
        
    $str preg_replace("/<s>(.+)<\/s>/Usi","[s]\\1[/s]",$str);
        
    $str preg_replace("/<div style=\"text-align:center\"\><img src=\"(.*)\" border=\"0\" \/><\/div>/Usi","[img]\\1[/img]",$str);
        
    //$str = preg_replace("/\[img\](.*)\[\/img\]/Usi","<div style=\"text-align:center\"><img src=\"\\1\" border=\"0\" /></div>",$str);
        
    $str str_replace("[url=","[url=http://",$str) ;
        
    //$str = str_replace("[url=http://","[url=",$str) ;
        
    $str preg_replace("/<a target=\"blank\" href=\"http:\/\/(.*)\">(.*)<\/a>/Usi","[url=\\1]\\2[/url]",$str);
        
    //$str = preg_replace("/\[url=(.*)\](.+)\[\/url\]/Usi","<a target=\"blank\" href=\"http://\\1\">\\2</a>",$str);
        
    $str str_replace("[yt=http://www.youtube.com/embed/","[yt=http://youtu.be/",$str) ;
        
    //$str = str_replace("[yt=http://youtu.be/","[yt=http://www.youtube.com/embed/",$str) ;
        
    $str preg_replace("/<div style=\"text-align:center\"><iframe  width=\"560\" height=\"345\" src=\"(.*)\" frameborder=\"0\" allowfullscreen><\/iframe><\/div>/Usi","[yt=\\1][/yt]",$str);
        
    //$str = preg_replace("/\[yt=(.*)\]\[\/yt\]/Usi","<div style=\"text-align:center\"><iframe  width=\"560\" height=\"345\" src=\"\\1\" frameborder=\"0\" allowfullscreen></iframe></div>",$str);
        
    return $str;
    }
     
Статус темы:
Закрыта.