2010-01-22 2 views
3

Если я ищу tOm ArNfElD и $variable является «Tom Arnfeld», я получаю отличную форму результатов LIKE в MySQL (без учета регистра).Wrap text - регистр без регистра с php

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

ответ

1
$textToPrint = preg_replace("/({$variable})/i","<span class"myclass">$1</span>,$text); 

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

+0

grrr ... кто-то другой после этого сначала, когда я писал ответ – Andreas

+0

работает отлично !! – tarnfeld

+0

Это потенциально фиктивный, вы не избегаете (используя 'preg_quote()') '$ variable'. –

0

Вы можете использовать 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); 
1

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

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

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

$text = str_ireplace($search, '<span>' . $search . '</span>', $text); 
Смежные вопросы