timbios Опубликовано 23 января, 2015 Жалоба Поделиться Опубликовано 23 января, 2015 (изменено) Дорогие пользователи портала 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 уже не поддерживается Изменено 24 января, 2015 пользователем Jion P.S. Забыл добавить, что код нужно вставлять в wall.php ( /system/classes/ ). Найти этот код: $tpl->set('{text}', stripslashes($row_wall['text'])); и заменить его тем, что выше! Ссылка на комментарий Поделиться на другие сайты Поделиться
JacksScripts Опубликовано 9 февраля, 2015 Жалоба Поделиться Опубликовано 9 февраля, 2015 если я не ошибаюсь то оптимизированный вариант это просто обновление тегов php под новую версию php где то 5.5 или 5.6 Ссылка на комментарий Поделиться на другие сайты Поделиться
timbios Опубликовано 9 февраля, 2015 Автор Жалоба Поделиться Опубликовано 9 февраля, 2015 если я не ошибаюсь то оптимизированный вариант это просто обновление тегов php под новую версию php где то 5.5 или 5.6 так оно и есть! Ссылка на комментарий Поделиться на другие сайты Поделиться
masi4ka Опубликовано 12 января, 2016 Жалоба Поделиться Опубликовано 12 января, 2016 как куда устанавливать Ссылка на комментарий Поделиться на другие сайты Поделиться
Shaman Daniels Опубликовано 12 января, 2016 Жалоба Поделиться Опубликовано 12 января, 2016 как куда устанавливать Тема в помощь! Ссылка на комментарий Поделиться на другие сайты Поделиться
m4ks Опубликовано 30 января, 2016 Жалоба Поделиться Опубликовано 30 января, 2016 Спасибо! Сделал всё как написано! Работает идеально. Еще раз спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
#Vrad Опубликовано 7 февраля, 2016 Жалоба Поделиться Опубликовано 7 февраля, 2016 Спасибо нужная вещь! Ссылка на комментарий Поделиться на другие сайты Поделиться
SLAVIk37 Опубликовано 17 сентября, 2018 Жалоба Поделиться Опубликовано 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); Ссылка на комментарий Поделиться на другие сайты Поделиться
Leymelki Опубликовано 18 сентября, 2018 Жалоба Поделиться Опубликовано 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); Дай ссылку Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения