Перейти к содержанию
CMSTOOLS.org - форум поддержки и развития CMS

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

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

  • 3 недели спустя...

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

  • 11 месяцев спустя...
  • 3 недели спустя...
  • 2 недели спустя...
  • 2 года спустя...

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

 


			$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

Ссылка на комментарий
Поделиться на другие сайты

В 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

Дай ссылку

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...