<?php
function teg($msg){
preg_match('/(?<=#)[0-9]+$/', $msg, $res);
$usv=mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id` = '$res[0]' LIMIT 1");
$nick="$usv[login]";
$msg=preg_replace('/(?<=#)[0-9]+$/is', '<a href="/page?id=$0">'.$nick.'</a>', $msg);
$msg=preg_replace('/[#]/is', '', $msg);
return $msg;
}
?>
Функция определяет по ID пользователя всообшении его логин и выводит ссылку на его профиль. Перед ID должна стоять "#" типа "#1" Выведет ссылку на страничку пользователя с ID=1.
В принципе функция с этим справляется, но проблема в том что при условии если данный хештег в конце сообшения. А если он в середине то она просто затирает его.
Подскажите в чём может быть проблема.
P.S. Что то на подобии есть здесь типа us{ID}
бакс - ета конец сообщения.
На
Добавлено 03.12.15 в 20:23:23:
'\<....\>'
Так, насколько я понял
Лоликонщик, всё также в конце рубит, а в начале или середине текста не берёт.
Ну и говнокодище. Надо полностью переписывать функцию
Добавлено 03.12.15 в 21:20:46:
<?php
function teg($msg){
preg_match('/#([0-9]+)/', $msg, $res);
$usv=mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id` = '$res[1]' LIMIT 1");
$nick="$usv[login]";
$msg=preg_replace('/#([0-9]+)/is', '<a href="/page?id=$1">'.$nick.'</a>', $msg);
return $msg;
}
?>
Пробуй
Tip, на данном этапе мне это не столь важно, мне больше важна полная роботаспособность функции, а не её чистота. Не чем помочь, проходи мимо.
Я до этого уже сам дошол, ноль эмоций.
Spayn®, [code]
<?php
$msg=preg_replace('/#[0-9]/Us', '<a href="/page?id=$0">'.$nick.'</a>', $msg);
?>
[/code]
ubisoftxxl, тоже самое. В конце текста обробатывает, в начале или в середине просто вырезает.