За последние 24 часа нас посетили 25777 программистов и 1727 роботов. Сейчас ищут 917 программистов ...

переписать preg_replace

Тема в разделе "PHP Free-Lance", создана пользователем tarasui, 22 янв 2015.

  1. tarasui

    tarasui Новичок

    С нами с:
    22 янв 2015
    Сообщения:
    2
    Симпатии:
    0
    Нужно переписать функцию для PHP 5.5.9-1ubuntu4.5 (cli) (built: Oct 29 2014 11:59:10)
    чтоб убрать "ругательство" : Unknown: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/system/library/bbcode.class.php on line 47
    листинг bbcode.class.php :
    Код (Text):
    1. <?php
    2. class BBCode
    3. {
    4.     public static $width = '160';
    5.     public static $bbclass = 'bbimage';
    6.     private static $simple_search = array('/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is', '/\[s\](.*?)\[\/s\]/is', '/\[size\=(.*?)\](.*?)\[\/size\]/is', '/\[color\=(.*?)\](.*?)\[\/color\]/is', '/\[center\](.*?)\[\/center\]/is', '/\[font\=(.*?)\](.*?)\[\/font\]/is', '/\[align\=(left|center|right)\](.*?)\[\/align\]/is', '/\[url\=(.*?)\]\[img\](.*?)\[\/img\]\[\/url\]/ise', '/\[url\](.*?)\[\/url\]/is', '/\[url\=(.*?)\](.*?)\[\/url\]/is', '/\[mail\=(.*?)\](.*?)\[\/mail\]/is', '/\[mail\](.*?)\[\/mail\]/is', '/\[img\](.*?)\[\/img\]/ise', '/\[img\=(\d*?)x(\d*?)\](.*?)\[\/img\]/is', '/\[img (.*?)\](.*?)\[\/img\]/ise', '/\[quote\](.*?)\[\/quote\]/is', '/\[quote\=(.*?)\](.*?)\[\/quote\]/is', '/\[code\](.*?)\[\/code\]/is', '/\[sub\](.*?)\[\/sub\]/is', '/\[sup\](.*?)\[\/sup\]/is', '/\[p\](.*?)\[\/p\]/is', "/\[video\](.*?)\[\/video\]/i", "/\[gvideo\](.*?)\[\/gvideo\]/i", '/\[bull \/\]/i', '/\[copyright \/\]/i', '/\[registered \/\]/i', '/\[tm \/\]/i');
    7.     private static $simple_replace = array('<strong>$1</strong>', '<em>$1</em>', '<u>$1</u>', '<del>$1</del>', '<span style="font-size: $1%;">$2</span>', '<span style="color: $1;">$2</span>', '<div style="text-align: center;">$1</div>', '<span style="font-family: $1;">$2</span>', '<div style="text-align: $1;">$2</div>', '"<a href=\"$1\" class=\"imagebox\" rel=\"imagebox\"><img class=\"bbimage\" alt=\"\" width=\"".self::$width."\" src=\"$2\"></a>"', '<a href="$1">$1</a>', '<a href="$1">$2</a>', '<a href="mailto:$1">$2</a>', '<a href="mailto:$1">$1</a>', '"<a href=\"$1\" class=\"imagebox\" rel=\"imagebox\"><img class=\"bbimage\" alt=\"\" width=\"".self::$width."\" src=\"$1\"></a>"', '<img height="$2" width="$1" src="$3" class=\"bbimage\" alt=\"\"/>', '"<img " . str_replace("&#039;", "\"",str_replace("&quot;", "\"", "$1")) . " src=\"$2\" width=\"".self::$width."\" class=\"bbimage\" alt=\"\"/>"', '<blockquote>$1</blockquote>', '<blockquote><strong>$1 wrote:</strong> $2</blockquote>', '<pre>$1</pre>', '<sub>$1</sub>', '<sup>$1</sup>', '<p>$1</p>', '<div style="overflow:hidden; "><iframe width="300" height="200" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe></div>', "<embed src=\"http://video.google.com/googleplayer.swf?docId=$1\" type=\"application/x-shockwave-flash\" style=\"width: 300px; height: 200px;\">", '&bull;', '&copy;', '&reg;', '&trade;');
    8.     private static $lineBreaks_search = array('/\[list(.*?)\](.+?)\[\/list\]/sie', '/\[\/list\]\s*\<br \/\>/i', '/\[code\](.+?)\[\/code\]/sie', '/\[\/code\]\s*\<br \/\>/i', '/\[\/quote\]\s*\<br \/\>/i', '/\[\/p\]\s*\<br \/\>/i', '/\[\/center\]\s*\<br \/\>/i', '/\[\/align\]\s*\<br \/\>/i');
    9.     private static $lineBreaks_replace = array("'[list$1]'.str_replace('<br />', '', '$2').'[/list]'", "[/list]", "'[code]'.str_replace('<br />', '', '$1').'[/ code]'", "[/ code]", "[/quote]", "[/p]", "[/center]", "[/align]");
    10.     private static function process_list_items($list_items)
    11.     {
    12.         $result_list_items = array();
    13.         preg_match_all("/\[li\](.*?)\[\/li\]/is", $list_items, $li_array);
    14.         $li_array = $li_array[1];
    15.         if (empty($li_array)) {
    16.             $list_items_array = explode("[*]", $list_items);
    17.             foreach ($list_items_array as $li_text) {
    18.                 $li_text = trim($li_text);
    19.                 if (empty($li_text)) {
    20.                     continue;
    21.                 } //empty($li_text)
    22.                 $li_text             = nl2br($li_text);
    23.                 $result_list_items[] = '<li>' . $li_text . '</li>';
    24.             } //$list_items_array as $li_text
    25.         } //empty($li_array)
    26.         else {
    27.             foreach ($li_array as $li_text) {
    28.                 $li_text             = nl2br($li_text);
    29.                 $result_list_items[] = '<li>' . $li_text . '</li>';
    30.             } //$li_array as $li_text
    31.         }
    32.         $list_items = implode("\n", $result_list_items);
    33.         return $list_items;
    34.     }
    35.     public static function parse($string)
    36.     {
    37.         $s = (string) $string;
    38.         if (empty($s)) {
    39.             return '';
    40.         } //empty($s)
    41.         $s = preg_replace('/\[url\=([^(http)].+?)\](.*?)\[\/url\]/i', '[url=http://$1]$2[/url]', $s);
    42.         $s = preg_replace('/\[url\]([^(http)].+?)\[\/url\]/i', '[url=http://$1]$1[/url]', $s);
    43.         $s = nl2br($s);
    44.         $s = preg_replace(self::$lineBreaks_search, self::$lineBreaks_replace, $s);
    45.         $s = preg_replace(self::$simple_search, self::$simple_replace, $s);
    46.         $s = preg_replace('/\[list\](.*?)\[\/list\]/sie', '"<ul>\n".self::process_list_items("$1")."\n</ul>"', $s);
    47.         $s = preg_replace('/\[list\=(disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman|lower-greek|lower-alpha|lower-latin|upper-alpha|upper-latin|hebrew|armenian|georgian|cjk-ideographic|hiragana|katakana|hiragana-iroha|katakana-iroha|none)\](.*?)\[\/list\]/sie', '"<ol style=\"list-style-type: $1;\">\n".self::process_list_items("$2")."\n</ol>"', $s);
    48.         return $s;
    49.     }
    50. }
    51. if (!function_exists('agoo_error_handler')) {
    52.     function agoo_error_handler($errno, $errstr)
    53.     {
    54.     }
    55. } //!function_exists('agoo_error_handler')
    56. ?>
    Напишите сколько стоит ?
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    10$ что бы поднять настроение.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    если smitt не справится, сделаю за $15.
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    если artoodetoo не справится, то подскажу куда копать за $20
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я чуть бесплатно код не разместил. хорошо что передумал.
     
  6. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    а я уже хотел доплатить за шанс выполнить задание
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вообще-то я серьезно переписал, начал создавать сообщение а потом решил что не буду у участников хлеб отнимать.
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    предлагает 300р, мне лень(((
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    ладно, раз моя очередь, вот мое решение: http://stackoverflow.com/questions/22621916/deprecated-preg-replace
    топикстартер, смотри сюда



    видишь ссылку на мой типа сайт?
    там указан мой кошелек. переведи деньги туда. ну или не переводи.
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    интересно, перевел ли)))
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    нет конечно.