Перенос текста - регистр не зависит от php - PullRequest
3 голосов
/ 22 января 2010

Если я ищу tOm ArNfElD и $variable - это "Том Арнфельд", я получаю отличные результаты из LIKE в MySQL (который не учитывает регистр).

Как можно обернуть сопоставленный текст в $variable с помощью <span></span>, чтобы выделить, какая часть поиска соответствует запросу? Мне нужно сохранить оригинальный чехол $variable.

Ответы [ 3 ]

1 голос
/ 22 января 2010

Я бы использовал регулярные выражения:

$text = preg_replace('~(' . preg_quote($search, '~') . ')~i', '<span>$1</span>', $text);

Есть и другие способы, такие как предложенный soulmerge (str_ireplace()):

$text = str_ireplace($search, '<span>' . $search . '</span>', $text);
1 голос
/ 22 января 2010
$textToPrint = preg_replace("/({$variable})/i","<span class"myclass">$1</span>,$text);

это может помочь

0 голосов
/ 22 января 2010

Вы можете использовать str_ireplace(), если хотите заменить всю строку или преобразовать свой LIKE-параметр в регулярное выражение и использовать preg_replace() (не забудьте preg_quote() строка, хотя).

Пример использования регулярных выражений:

$parts = explode('%', $likeQuery)
foreach ($parts as &$innerString) {
    $innerParts = explode('_', $innerString);
    foreach ($innerParts as &$part) {
        $part = preg_quote($part, '/');
    }
    // always unset references when you're done with them
    unset($part):
    $innerString = implode('.', $innerString);
}
// always unset references when you're done with them
unset($innerString):
$regex = implode('.*?', $parts);
$transformedString = preg_replace("/$regex/", '<span>$0</span>', $stringToTransform);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...