Jump to content

Recommended Posts

Дорогие пользователи портала cms tools.ru

Нашел недавно код Хэш тегов на одном из форумов посвященным vii engine.

Но только предупреждаю, что он работает только с версией php выше чем 5.5 (кажись так)

 

Автор кода: Andrey или же Andrey Ajax

 

Он взял старый код:

$msg = stripslashes($row_wall['text']);  // Удаляем экранированые символы и задаем переменную
$pat = array('/#(\w+)/', '/@(\w+)/'); // Оттискиваем всё что после # и @
$rep = array('[url="http://example.com/tag/$1"]#$1[/URL]','[url="http://example.com/user/$1"]@$1[/URL]'); // Добавляем то что нашли после @ и # в нужные нам места
$new_msg = preg_replace($pat, $rep, $msg); // Производим замену
$tpl->set('{text}', $new_msg); // Выводим в шаблон допустим если в шаблоне было @andrey то этот код в шаблон выведет [url="http://example.com/user/andrey"]andrey[/URL] так же и с решеткой

И сделал оптимизированый Вариант:

$msg = stripslashes($row_wall['text']);  // Удаляем экранированые символы и задаем переменную
$array = array( '/#(\w+)/' => '[url="http://example.com/tag/$1"]#$1[/URL]', '/@(\w+)/' => '[url="http://example.com/user/$1"]@$1[/URL]'); // Оттискиваем всё что после # и @
$new_msg = str_replace(array_keys($array), array_values($array), $msg); // Производим замену
$tpl->set('{text}', $new_msg); // Выводим в шаблон допустим если в шаблоне было @andrey то этот код в шаблон выведет [url="http://example.com/user/andrey"]andrey[/URL] так же и с решеткой

Так же, цитирую автора:

 


 

 

Всегда старайтесь оптимизировать свой код что бы он был стабильный и быстрый, вот Вам простой пример функций поиска и замены тест на 1000 строк, Результат:

  •  
  • strtr — 0.45s*
  •  
  • preg_replace- 0.28s*
  •  
  • str_replace — 0.14s*
  •  

к тому же preg_replace в php выше 5.5 уже не поддерживается
Edited by Jion
P.S. Забыл добавить, что код нужно вставлять в wall.php ( /system/classes/ ). Найти этот код: $tpl->set('{text}', stripslashes($row_wall['text'])); и заменить его тем, что выше!

Share this post


Link to post
Share on other sites

если я не ошибаюсь то оптимизированный вариант это просто обновление тегов php под новую версию php где то 5.5 или 5.6 

Share this post


Link to post
Share on other sites

если я не ошибаюсь то оптимизированный вариант это просто обновление тегов php под новую версию php где то 5.5 или 5.6 

так оно и есть!

Share this post


Link to post
Share on other sites

Спасибо! Сделал всё как написано! Работает идеально. Еще раз спасибо!

Share this post


Link to post
Share on other sites

Здравствуйте, не подскажите в чем может быть проблема? Не создаются ссылки

 


			$msg = stripslashes($row_wall['text']);
			$array = array( '/#(\w+)/' => '<a href="/?go=search&query=$1&type=7">#$1</a>', '/@(\w+)/' => '<a href="/u$1">@$1</a>');
			$new_msg = str_replace(array_keys($array), array_values($array), $msg);
			$tpl->set('{text}', $new_msg);

 

Снимок.PNG

222.PNG

Share this post


Link to post
Share on other sites
В 17.09.2018 в 14:41, SLAVIk37 сказал:

Здравствуйте, не подскажите в чем может быть проблема? Не создаются ссылки

 


			$msg = stripslashes($row_wall['text']);
			$array = array( '/#(\w+)/' => '<a href="/?go=search&query=$1&type=7">#$1</a>', '/@(\w+)/' => '<a href="/u$1">@$1</a>');
			$new_msg = str_replace(array_keys($array), array_values($array), $msg);
			$tpl->set('{text}', $new_msg);

 

Снимок.PNG

222.PNG

Дай ссылку

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×