ponich
@ponich
php,mysql,js

Регулярное выражения на несколько слов или одно?

Добрый день. Помогите пожалуйста составить регулярное выражения.
Что нужно:
1. Найти слово|слова по ключу
2. Поменять эти слова на ссылку

К примеру у меня есть вот такой текст:
"Я очень проголодался, не против бы пойти в столовую"

Так же есть ключи и ссылки:
проголодался|site1.com
пойти в столовую|site2.com

Сейчас у меня работает вот так:
$text = preg_replace ("/($key)+\b/iu"," <a href=$url >$1</a> ",$text,1);

Но, работает только с ключем "проголодался".
  • Вопрос задан
  • 571 просмотр
Решения вопроса 1
KorsaR-ZN
@KorsaR-ZN
Научитесь читать документацию (preg_replace), там очень подробно описана работа данной функции и какие параметры она может принимать.

$text = 'Я очень проголодался, не против бы пойти в столовую.';
$words = [
'проголодался' => 'site1.com',
'пойти в столовую' => 'site2.com'
];

$patterns = array_map(function($v) {
	return '#(' . $v . '\b)#iu';
}, array_keys($words));

$replacements = array_map(function($v) {
	return '<a href="' . $v . '">\1</a>';
}, array_values($words));

$text = preg_replace($patterns, $replacements, $text);

echo $text; // Я очень <a href="site1.com">проголодался</a>, не против бы <a href="site2.com">пойти в столовую</a>.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы