Не будучи узнаваемым в шаблонах регулярных выражений и после прочтения всех вики и ссылок, я обнаружил, что у меня возникают проблемы с изменением шаблона для обнаружения слов и повышения яркости.regex case нечувствительный и с/без пробелов
Я нашел функцию на другой StackOverflow ответ, который сделал все, что было необходимо, но теперь я узнал, что он пропускает несколько вещей
Функция является:
function ParserGlossario($texto, $termos) {
$padrao = '\1<a href="#" class="termo">\2</a>\3';
if (empty($termos)) {
return $texto;
}
if (is_array($termos)) {
$substituir = array();
$com = array();
foreach ($termos as $key => $value) {
$key = $value;
$value = $padrao;
// $key = '([\s])(' . $key . ')([\s\.\,\!\?\<])';
$key = '([\s])(' . $key . ')([\s\.\,\!\?\<])';
$substituir[] = '|' . $key . '|ix';
$com[] = empty($value) ? $padrao : $value;
}
return preg_replace($substituir, $com, $texto);
} else {
$termos = '([\s])(' . $termos . ')([\s])';
return preg_replace('|'.$termos.'|i', $padrao, $texto);
}
}
Некоторые слова не быть выделенные (те, отмеченные красными стрелками):
И я не знаю, если это поможет, но вот массив "терминов", который используется для поиска текста:
EDIT. Строка, которую ищут, представляет собой просто текст:
Abaxial Xxxxx acaule Acaule xxxxxx xxx; xxxxx xxx Абаксиальные esporos. abaxial
EDIT. Добавлена PHP код скрипку
http://phpfiddle.org/main/code/079ad24318f554d9f2ba
Любая помощь? Я действительно не знаю много о регулярных выражениях ...
Я предполагаю, что это строка html? Первый Abaxial, вероятно, не соответствует coz, он находится в начале строки и не имеет ведущего пространства. Показать фактическую строку ввода ('$ texto)', а не только ваши условия поиска. –
Есть очень простой сайт, который дает вам отличные примеры и вы можете скопировать и вставить тестовый текст и попробовать RegEx здесь: (http://www.regexr.com) вы также можете скачать «Expresso 2.0», который представляет собой набор регулярных выражений, который имеет приличное количество предварительно загруженных регулярных выражений. –
@MarcB: Извините, что не отправлял строку. Моя вина. Это просто плагин, следующий из выбора mysql. –