Ошибка при попытке заменить пользовательские теги @user ссылкой в ​​PHP - PullRequest
0 голосов
/ 30 апреля 2020

Это регулярное выражение прекрасно работает со словами типа

@ user

@user.

@ user.?

и другие символы после @ user.

Но я не могу получить только пользователя без @ в моей ссылке.

        echo '<td>'.preg_replace('/(?<=^|\s)@(\w+)/', "<a href='usersMessages.php?id=$0'>$0</a>", $row['content'] ).'</td>';

Вывод ссылки:. ../usersMessages.php?id=@user

Что я хочу: ... / usersMessages. php? id = user

Как от этого избавиться?

РЕДАКТИРОВАТЬ: я пытался использовать:

        echo '<td>'.preg_replace('/(?<=^|\s)@(\w+)/', "<a href='usersMessages.php?id='.str_replace('@', '', $0).''>$0</a>", $row['content'] ).'</td>';

, но он дает мне пустой идентификатор: ... / usersMessages. php? Id =

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Вы можете удалить любой символ из PHP, используя встроенную функцию:

$replaced = str_replace('@', '', $yourVariable)

Самое интересное в этой функции - поддержка массива:

$arr = array("blue","red","green","yellow");
print_r(str_replace("red","pink",$arr,$i));
echo "Replacements: $i";

Больше можно найдено из PHP Do c

0 голосов
/ 30 апреля 2020

Ваше регулярное выражение в порядке, не строка замены:

"<a href='usersMessages.php?id='.$row['username'].''>$row['username']</a>"

Кажется, что вы пытаетесь объединить внутри строки с двойными кавычками, но вам просто нужно заключить элементы массива в фигурные скобки и удалить ненужные одинарные кавычки и точки:

"<a href='usersMessages.php?id={$row['username']}'>{$row['username']}</a>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...