timbios 197 Report post Posted January 23, 2015 (edited) Дорогие пользователи портала 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 January 24, 2015 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
JacksScripts 59 Report post Posted February 9, 2015 если я не ошибаюсь то оптимизированный вариант это просто обновление тегов php под новую версию php где то 5.5 или 5.6 Share this post Link to post Share on other sites
timbios 197 Report post Posted February 9, 2015 если я не ошибаюсь то оптимизированный вариант это просто обновление тегов php под новую версию php где то 5.5 или 5.6 так оно и есть! Share this post Link to post Share on other sites
masi4ka 7 Report post Posted January 12, 2016 как куда устанавливать Share this post Link to post Share on other sites
Shaman Daniels 141 Report post Posted January 12, 2016 как куда устанавливать Тема в помощь! Share this post Link to post Share on other sites
m4ks 2 Report post Posted January 30, 2016 Спасибо! Сделал всё как написано! Работает идеально. Еще раз спасибо! Share this post Link to post Share on other sites
#Vrad 0 Report post Posted February 7, 2016 Спасибо нужная вещь! Share this post Link to post Share on other sites
SLAVIk37 0 Report post Posted September 17, 2018 Здравствуйте, не подскажите в чем может быть проблема? Не создаются ссылки $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); Share this post Link to post Share on other sites
Leymelki 25 Report post Posted September 18, 2018 В 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); Дай ссылку Share this post Link to post Share on other sites