Предполагая, что это связано с вопросом, который вы опубликовали и удалили некоторое время назад (это был вы, не так ли?), Ваш фундаментальный подход неверен. Вы сказали, что сами генерировали эти HTML-ссылки, заменяя слова из списка ключевых слов. Проблема в том, что ключевые слова, расположенные ниже по списку, иногда появляются в сгенерированных атрибутах заголовка и заменяются ошибкой - и теперь вы пытаетесь исправить ошибки.
Основная проблема заключается в том, что вы заменяете каждое ключевое слово, используя отдельный вызов preg_replace
, эффективно обрабатывая весь текст снова и снова. Что вы должны сделать, это обработать текст один раз , сопоставляя каждое слово и ища его в вашем списке ключевых слов; если это в списке, замените его. Я не настроен на написание / тестирование PHP-кода, но вы, вероятно, хотите использовать preg_replace_callback
:
$text = preg_replace_callback('/\b[A-Za-z]+\b/', "the_callback", $text);
"the_callback" - это имя функции, которая ищет слово и, если оно есть в списке, генерирует соответствующую ссылку; в противном случае возвращается совпадающее слово. Это может показаться неэффективным, обрабатывая каждое слово, как это, но на самом деле это намного более эффективнее, чем ваш первоначальный подход.