2016-08-13 5 views
0

Я нашел код для использования bb-кодов в своем личном сообщении о профилях, но когда я вернусь к настройкам, чтобы изменить сообщение, это echo html-теги вместо замены bb-кодов.обратные bb-коды при echo

BB-коды:

 if(isset($_POST['submit'])) { 

     if(isset($_POST['bio_message'])){ 
//BBCode Parser function 
function showBBcodes($text) { 
     // BBcode array 
     $find = array(
       '~\[b\](.*?)\[/b\]~s', 
       '~\[i\](.*?)\[/i\]~s', 
       '~\[u\](.*?)\[/u\]~s', 
       '~\[quote\](.*?)\[/quote\]~s', 
       '~\[url\]((?:ftp|https?)://.*?)\[/url\]~s', 
       '~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s' 
     ); 
     // HTML tags to replace BBcode 
     $replace = array(
       '<b>$1</b>', 
       '<i>$1</i>', 
       '<p style="text-decoration:underline;">$1</p>', 
       '<pre>$1</'.'pre>', 
       '<a href="$1">$1</a>', 
       '<img src="$1" alt="" />' 
     ); 
     // Replacing the BBcodes with corresponding HTML tags 
     return preg_replace($find,$replace,$text); 
} 
// How to use the above function: 
$text = $_POST['bio_message']; 
$htmltext = showBBcodes($text); 

     } 

      $id = htmlentities($_SESSION['user']['id'], ENT_QUOTES, 'UTF-8'); 

      $bio_sql = "UPDATE users SET bio = '$htmltext' WHERE id = '$id'"; 
      $db->query($bio_sql); 
     }else{} 

эхо био в текстовое поле:

<?php 
$id = htmlentities($_SESSION['user']['id'], ENT_QUOTES, 'UTF-8'); 
$SQL = "SELECT * FROM users WHERE id = '$id'"; 


$result = $db->query($SQL); 

/* associative array */ 
$row = $result->fetch_array(MYSQLI_ASSOC); 
print(htmlentities($row['bio'], ENT_QUOTES, 'UTF-8')); 

    $result->free(); 
?> 
+0

Ну, вы точно так же, как раз наоборот. –

+0

пробовал, но не работает. repleaced $ find и $ replace, а также переключили их порядок. –

+0

Вы также должны отредактировать регулярное выражение и его замену. –

ответ

0

Попробуйте эту функцию

function showHTML($text) { 
    // HTML tags to replace 
    $find = array(
     '~<b>(.*?)</b>~s', 
     '~<i>(.*?)</i>~s', 
     '~<p style="text-decoration:underline;">(.*?)</p>~s', 
     '~<pre>(.*?)</pre>~s', 
     '~<a href="(.*?)">(.*?)</a>~s', 
     '~<img src="(.*?)" alt="" />~s' 
    ); 

    // BBcode array 
    $replace = array(
     '[b]$1[/b]', 
     '[i]$1[/i]', 
     '[u]$1[/u]', 
     '[quote]$1[/quote]', 
     '[url]$1[/url]', 
     '[img]$1[/img]' 
    ); 

    // Replacing the BBcodes with corresponding HTML tags 
    return preg_replace($find,$replace,$text); 
} 

Входной сигнал:

<i>fsfsdfsf</i> <a href="http://abc.de">http://abc.de</a> 

Выход:

[i]fsfsdfsf[/i] [url]http://abc.de[/url] 
+0

Ну сначала добавьте функцию к вашему PHP-коду, а затем вызовите его с помощью showHTML ($ text) –

+0

Не можете заставить его работать. Мне нужно showBBcodes ($ text), чтобы заставить его эха, но он получает ошибку или что-то, потому что он сокращает все ниже этой части, когда я добавляю ее. –

+0

Я рекомендую вам прочитать основы php, особенно функции и их использование. Вы должны перенести свою оригинальную функцию и мою в отдельный файл, например, funtions.php, и включить его через include_once ('functions.php') ;. Тогда все, что вам нужно сделать, это вызвать метод showHTML, если вы хотите заменить BBCode на HTML и showBBcode, когда хотите конвертировать HTML в BBcode –

0

Это код, я в настоящее время используют, чтобы попытаться повторить $row['bio']

<?php        
    function showHTML($text) { 
     // HTML tags to replace 
     $find = array(
      '~<b>(.*?)</b>~s', 
      '~<i>(.*?)</i>~s', 
      '~<p style="text-decoration:underline;">(.*?)</p>~s', 
      '~<pre>(.*?)</pre>~s', 
      '~<a href="(.*?)">(.*?)</a>~s', 
      '~<img src="(.*?)" alt="" />~s' 
     ); 

     // BBcode array 
     $replace = array(
      '[b]$1[/b]', 
      '[i]$1[/i]', 
      '[u]$1[/u]', 
      '[quote]$1[/quote]', 
      '[url]$1[/url]', 
      '[img]$1[/img]' 
     ); 

     // Replacing the BBcodes with corresponding HTML tags 
     return preg_replace($find,$replace,$text); 
    } 

    $result = $db->query("SELECT * FROM users WHERE id='$id'"); 
    $row = $result->fetch_array(MYSQLI_ASSOC); 

    print(showHTML($row['bio'], ENT_QUOTES, 'UTF-8')); 
?> 
+0

О, я вижу, это было плохо. Замените 'showHTML ($ row ['bio'], ENT_QUOTES, 'UTF-8')' с 'htmlentities (showHTML ($ row ['bio']), ENT_QUOTES, 'UTF-8')' –

+0

нет, еще ничего , он сохраняет и эхо, как я хочу его в своем профиле, но не в текстовом поле после отправки –

+0

Для меня похоже, что вы просто выполняете sql-запрос и даже не извлекаете данные из базы данных. $ row ['bio'] - результат вашей выборки. –