2016-01-09 2 views
0

Я нашел сценарий на Интернете, чтобы из BBcode как [б] заменитьHTML из базы данных заменить BBcode

function bbcodehtml($bbtext){ 
    $bbtags = array(
    '[b]' => '<strong>','[/b]' => '</strong>', 
    '[i]' => '<em>','[/i]' => '</em>', 
    '[u]' => '<span style="text-decoration: underline;">', '[/u]' => '</span>', 
    '[code]' => '<blockquote>','[/code]' => '</blockquote>' 
); 

    $bbtext = str_ireplace(array_keys($bbtags), array_values($bbtags), $bbtext); 

    $bbextended = array(
    "/\[url](.*?)\[\/url]/i" => "<a target=\"_blank\" href=\"http://$1\" title=\"$1\">$1</a>", 
    "/\[url=(.*?)\](.*?)\[\/url\]/i" => "<a target=\"_blank\" href=\"$1\" title=\"$1\">$2</a>", 
    "/\[img\]([^[]*)\[\/img\]/i" => "<img style=\"max-width:700px;\" src=\"$1\" alt=\" \" />", 
    "/\[image\]([^[]*)\[\/image\]/i" => "<img style=\"max-width:700px;\" src=\"$1\" alt=\" \" />" 
); 

    foreach($bbextended as $match=>$replacement){ 
    $bbtext = preg_replace($match, $replacement, $bbtext); 
    } 
    return $bbtext; 
} 

Но теперь у меня есть с момента, когда я хочу, чтобы отобразить содержимое в текстовое поле я не могу заменить HTML для BBCODES. . Я попытался изменить значение preg_replace и я получил ошибку ..

+2

Привет и добро пожаловать в SO. Добавьте существенные части кода (возможно, ошибки). Прочитайте [как спросить] (http://stackoverflow.com/help/how-to-ask) и [mcve] (http://stackoverflow.com/help/mcve) для получения лучшего полученного вопроса. Поместите здесь свои ошибки. – davejal

ответ

0

Хм ...

1) Ваш код имеет много проблем с безопасностью. Один пример. Пользователь может написать текст для XSS атаки, как это:

[img]" onmouseover="alert(document.cookie);[/img] 

2) Вы должны иметь два поля на БД, где первое поле содержит источник (unreplaced BB-коды) текст, а второе поле содержит заменить (только для чтения HTML) текст , В этом случае вы можете запустить процесс замещения (bb to html) только для создания или редактирования текстового действия.

Смежные вопросы