|
|
|
| $my_string=str_replace("$word","<b>$word</b>","$my_string") ;
Делаю поиск по сайту, надо чтобы фраза, которая учавствует в поиске выделялась жирным шрифтом, но есть пробелма, как быть с заглавными буквами?
Надо чтобы слова с заглавными буквами в результате поиска тоже выделялись жирным шрифтом. как быть?
Пробовал
$my_string=preg_replace("/($word)/i","<b>$word</b>","$my_string") ;
На моем хостинге не работает ( | |
|
|
|
|
|
|
|
для: nekifrovv
(24.01.2010 в 16:04)
| | что содержится в $word ? это массив или что ?
вообще правильнее делать так
<?php
$my_string = preg_replace("/(".$word.")/i", "<b>".$word."</b>", $my_string);
?>
|
| |
|
|
|
|
|
|
|
для: t3ma
(24.01.2010 в 16:29)
| | $word - это слово которое набрали в поисковике. Не массив.
Почемуто preg_replace хорошо работает с Английскими буквами, а вот с русскими не хочет того же выполнять! | |
|
|
|
|
|
|
|
для: t3ma
(24.01.2010 в 16:29)
| | Пример с русскими символами не работает ( | |
|
|
|
|
|
|
|
для: nekifrovv
(24.01.2010 в 16:04)
| |
<?php
$word = 'Заголовок';
$my_string = "Вы искали {$word}, с чем вас и поздравляем";
$my_string = str_replace($word, "<b>" . $word . "</b>", $my_string) ;
echo $my_string;
|
Я вас, наверное, удивлю, но у меня все работает. | |
|
|
|
|
|
|
|
для: neadekvat
(24.01.2010 в 17:38)
| | <?
$my_string = "Привет мир";
$word = "прив";
$my_string = preg_replace("/(".$word.")/i", "<b>".$word."</b>", $my_string);
echo $my_string;
?>
Существует какойто текст, где есть обычные и заглавные буквы $my_string
Существует слово написанное маленькими буквами
Надо чтобы в результате, в тексте, в котором содержатся и большие и маленькие буквы, вне зависимости от того какие они большие или маленькие - $word = "прив"; но вот эти, были выделены жирным шрифтом.
А то что это работает, я не удивлен! | |
|
|
|
|
|
|
|
для: Nekifrovv
(24.01.2010 в 17:53)
| | str_ireplace();
работает так же, но не смотрит на регистр | |
|
|
|
|
|
|
|
для: DEM
(24.01.2010 в 20:02)
| |
<?
$my_string = "Hellow world";
$word = "hel";
$my_string=str_ireplace("$word","<b>$word</b>","$my_string") ;
echo $my_string;
?>
| Работает
<?
$my_string = "Привет мир";
$word = "пр";
$my_string=str_ireplace("$word","<b>$word</b>","$my_string") ;
echo $my_string;
?>
| Не работает
В чем интересно могут быть причины, в хостинге? | |
|
|
|
|
|
|
|
для: Nekifrovv
(24.01.2010 в 21:58)
| | У меня работает.
Попробуйте локаль выставить
setlocale(LC_ALL, 'ru_RU'); | |
|
|
|
|
|
|
|
для: neadekvat
(24.01.2010 в 22:03)
| | Ты гений! спасибо! )
Я еще, не знаете, случайно, как сделать, чтобы результат с выделенным текстом был в таком же регистре как и в результате поиска, а не в запросе?
т. е. , чтобы после вот этого:
<?
setlocale(LC_ALL, 'ru_RU');
$my_string = "Привет мир";
$word = "пр";
$my_string=str_ireplace("$word","<b>$word</b>","$my_string") ;
echo $my_string;
?>
| Было не "привет мир", а "Привет мир" | |
|
|
|
|
|
|
|
для: Nekifrovv
(24.01.2010 в 22:16)
| | И еще прикол, есть некоторые слова, на которые это не действует ) Например у меня все работает на "Привет мир", а на слово "Электронный" не работает )
<?
setlocale(LC_ALL, 'ru_RU');
$my_string = "Электронный";
$word = "эл";
$my_string=str_ireplace("$word","<b>$word</b>","$my_string") ;
echo $my_string;
?>
|
| |
|
|
|
|
|
|
|
для: Nekifrovv
(25.01.2010 в 10:23)
| | Где то здесь уже разбирали подобное. Вот так можно:
<?php
$text = 'Надо чтобы слова с заглавными буквами в результате поиска тоже выделялись жирным шрифтом. как быть?
И еще прикол, есть некоторые слова, на которые это не действует )
Например у меня все работает на "Привет мир", а на слово "Электронный" не работает ';
$pattern = "надо чтобы слова эл";
function parser($text, $pattern)
{
$arr = explode(" ", $pattern);
if(preg_match_all('#('.implode('|', array_map('preg_quote', $arr)).')#ius', $text, $out, PREG_OFFSET_CAPTURE))
{
$result = '';
$src = 0;
foreach($out[0] as $value)
{
if($value[1] > $src)
$result .= substr($text, $src, $value[1] - $src);
$src = $value[1] + mb_strlen($value[0]);
$result .= '<b style="background-color:#FFFF00">'.$value[0].'</b>';
}
$result .= substr($text, $src);
}
return $result;
}
echo parser($text, $pattern);
|
| |
|
|
|
|
|
|
|
для: Николай2357
(25.01.2010 в 13:25)
| | Warning: preg_match_all() [function.preg-match-all]: Compilation failed: invalid UTF-8 string at offset 2 in test2.php on line 12 | |
|
|
|
|
|
|
|
для: Nekifrovv
(25.01.2010 в 23:13)
| | скрипт-то сам в utf-8 ? | |
|
|
|
|
|
|
|
для: Trianon
(25.01.2010 в 23:26)
| | Мои нет, этот похоже да ( | |
|
|
|
|
|
|
|
для: Nekifrovv
(25.01.2010 в 23:41)
| | Ну дык в чем проблема то? Всего две строчки исправить. Убрать модификатор u в preg_match_all и mb_strlen заменить на strlen...
А лучше кодировку сменить))) | |
|
|
|
|
|
|
|
для: Николай2357
(25.01.2010 в 23:54)
| | Спасиб, есть контакт, но прикол в том, что на слово "электронный" опять не работает ) Т.е. если ищем "эл" в "Электронный" то ничего не выделится... ) Может впринципе быть в кодировке дело ?:) | |
|
|
|
|
|
|
|
для: Nekifrovv
(26.01.2010 в 00:08)
| | локаль-то у Вас какая?
ru-ru.cp1251 или ru-ru.koi-8r ? | |
|
|
|
|
|
|
|
для: Trianon
(26.01.2010 в 00:27)
| | Локаль пробовал вставить
setlocale(LC_ALL, 'ru_RU');
setlocale(LC_ALL, "ru-ru.koi-8r");
setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
по очереди - результат один. Все кроме слова "Электронный"
Попробовал на русском хостинге без локалей - все ок работает. | |
|
|
|
|
|
|
|
для: Nekifrovv
(25.01.2010 в 23:13)
| | Necessary to use true charset | |
|
|
|