Вы можете использовать preg_replace_callback
, а для параметра callback
использовать функцию, которая использует идентификатор для извлечения имени из базы данных.
Обратите внимание, что вышеуказанный подход, хотя и простой, потенциально может привести к большому количеству вызовов базы данных.Улучшение заключается в том, чтобы сначала найти все идентификаторы, используя preg_match_all
, и сохранить их в массиве.Затем вы можете получить все имена за один вызов базы данных.SQL, который вам нужен, будет выглядеть примерно так:
SELECT id, name
FROM links
WHERE id IN (?, ?, ?)
Следите за уязвимостями внедрения SQL, если вы не используете параметризованные запросы.Сохраните результаты в ассоциативном массиве с идентификатором в качестве ключа и именем в качестве значения.
Наконец, вы можете использовать preg_replace_callback
, когда функция обратного вызова находит имя из массива.