Ни ваше регулярное выражение, ни строка замены не имеют смысла. Регулярное выражение соответствует всему , а не в диапазоне [a-z]
(обозначается лидирующим ^
), и ваша замещающая строка содержит синтаксис регулярного выражения, чего не должно быть.
Если вы пытаетесь заменить слова, ваше регулярное выражение, вероятно, должно выглядеть примерно так: /[a-z]+/i
, что делает жадное совпадение без учета регистра для одной или нескольких букв.
Чтобы использовать совпавшую строку в замене, вы можете использовать \N
, где N
- это число, указывающее суб-совпадение, на которое вы хотите сослаться. Чтобы добавить под-совпадение, поместите скобки вокруг части регулярного выражения, на которое вы хотите сослаться. Регулярное выражение становится /([a-z]+)/i
.
Соедините их, и вы получите следующее, которое, по-видимому, даст искомый результат.
$string = preg_replace("/([a-z]+)/i", "<a href='\\1'>\\1</a>", $string);
Обратите внимание, что двойной обратный слеш - это escape-последовательность, вставляющая буквенный обратный слеш в строку.