Перейти к контенту

Рекомендуемые сообщения

Здравствуйте!

Долго ломал голову сам, не додумался, прошу мне помочь.

 

Значится, есть переменная, в которое содержится некий текст. В тексте могут быть смайлы, жирный текст, ссылки и тп.

Все в формате BBкодов.

 

Переменная есть $show['message'].

 

Вот содержимое парсера:

 

функция для конвертации URL

function handle_url_tag($url, $link = '')
{
global $pun_user;

$full_url = str_replace(array(' ', '\'', '`', '"'), array('%20', '', '', ''), $url);
if (strpos($url, 'www.') === 0)			// If it starts with www, we add http://
	$full_url = 'http://'.$full_url;
else if (strpos($url, 'ftp.') === 0)	// Else if it starts with ftp, we add ftp://
	$full_url = 'ftp://'.$full_url;
else if (!preg_match('#^([a-z0-9]{3,6})://#', $url, $bah))	 // Else if it doesn't start with abcdef://, we add http://
	$full_url = 'http://'.$full_url;

// Ok, not very pretty :-)
$link = ($link == '' || $link == $url) ? ((strlen($url) > 55) ? substr($url, 0 , 39).' … '.substr($url, -10) : $url) : stripslashes($link);

return '<a href="'.$full_url.'">'.$link.'</a>';
}

 

массивы других кодов и смайлов

 

$pattern = array('#\[b\](.*?)\[/b\]#s',
				 '#\[i\](.*?)\[/i\]#s',
				 '#\[u\](.*?)\[/u\]#s',
				 '#\[s\](.*?)\[/s\]#s',
				 '#\[mono\](.*?)\[/mono\]#s',
				 '#\[url\]([^\[]*?)\[/url\]#e',
				 '#\[url=([^\[]*?)\](.*?)\[/url\]#e',
				 '#\[search\]([^\[]*?)\[/search\]#e',
				 '#\[search=([^\[]*?)\](.*?)\[/search\]#e',
				 '#\[email\]([^\[]*?)\[/email\]#',
				 '#\[email=([^\[]*?)\](.*?)\[/email\]#',
				 '#\[color=([a-zA-Z]*|\#?(?:[0-9a-fA-F]{3}){1,2})](.*?)\[/color\]#s',
				 '#\[center\](.*?)\[/center\]#s',
				 '#\[right\](.*?)\[/right\]#s',
				 '#\[left\](.*?)\[/left\]#s',
				 '#\[size=([0-9]*)](.*?)\[/size\]#s');

$replace = array('<strong>$1</strong>',
				 '<em>$1</em>',
				 '<span class="bbu">$1</span>',
				 '<span class="bbs">$1</span>',
				 '<code>$1</code>',
				 'handle_url_tag(\'$1\')',
				 'handle_url_tag(\'$1\', \'$2\')',
				 'handle_search_tag(\'forum\', \'$1\')',
				 'handle_search_tag(\'$1\', \'$2\')',
				 '<a href="mailto:$1">$1</a>',
				 '<a href="mailto:$1">$2</a>',
				 '<span style="color: $1">$2</span>',
				 '</p><p align="center">$1</p><p>',
				 '</p><p align="right">$1</p><p>',
				 '</p><p align="left">$1</p><p>',
				 '<span style="font-size: $1px">$2</span>');

//prevrashem text v smailu i dobavlyaem put'...
$smiley_text = array(':))', ':)', '=)', ':|', '=|', ':(', '=(', ':D', '=D', ':o', ':O', ';)', ':/', 
		':P', ':lol:', ':mad:', ':rolleyes:', ':cool:');
$smiley_img = array($p.'roll.png">',$p.'smile.png">', $p.'smile.png">', $p.'neutral.png">', $p.'neutral.png">', $p.'sad.png">', 
		$p.'sad.png">', $p.'big_smile.png">', $p.'big_smile.png">', $p.'yikes.png">', $p.'yikes.png">', $p.'wink.png">', 
		$p.'hmm.png">', $p.'tongue.png">', $p.'lol.png">', $p.'mad.png">', $p.'roll.png">', $p.'cool.png">');

 

Вот как я сделал в фильном файле:

 

$message = preg_replace($pattern, $replace, $show[message]);
$message = str_replace($smiley_text, $smiley_img, $message);
$message= str_replace($fromurl, $tourl, $message);
echo nl2br($message);

 

 

Парсер не полностью написан мной.

В частности, функции замены [url= на <a href и тд неписаны не мной.

 

Так вот, функция не парсит это сообщение.

Подскажите, как написать новую функцию для парсинга BBcode ?

Не могу ничего умного придумать.....

Изменено пользователем elcomnet
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.