(PHP) Как учесть заглавные буквы в str_replace?

McLighter
Дата: 29.06.2006 11:31:31
Пишу поиск для сайта. Организовал его через замену искомого слова в строке на тоже слово но выделенное.
$my_string=str_replace("$word","<b>$word</b>","$my_string") ;

Проблема в том что если слово в строке с большой буквы, а в поиске с маленькой то естественно оно не выделяется.

Как бы это учесть?

Вроде можно через ereg... но я уже подзабыл как там все делается, да и может есть решение проще?
DocAl
Дата: 29.06.2006 11:33:12
Я б почитал документацию...
Robert Tappan Moris
Дата: 29.06.2006 11:44:53
А точнее http://php.net/str_ireplace

Картинка с другого сайта.
Картинка с другого сайта.
McLighter
Дата: 29.06.2006 12:12:06
нет у меня str_ireplace ... потому как php 4
что делать то?
(переходить на 5 не предлагать.)
Robert Tappan Moris
Дата: 29.06.2006 12:17:16
Использовать регулярные выражения.

Картинка с другого сайта.
Картинка с другого сайта.
Robert Tappan Moris
Дата: 29.06.2006 12:23:54
$my_string = "Hello world";
$word = "Hel";
$my_string = preg_replace("/($word)/i","<b>$1</b>",$my_string);

Картинка с другого сайта.
Картинка с другого сайта.
McLighter
Дата: 29.06.2006 12:35:48
Объясните пожалуйста последнюю строчку. Слеши, i , $1.
Robert Tappan Moris
Дата: 29.06.2006 13:06:22
/.../
обще принятое обозначение регулярного выражения (например, javascript именно так отличает строку от регулярки)

/.../i
регулярное выражение с модификатором, которой указывает на то, что поиск нужно производить без учета регистра

$1
Eсли в первном параметре preg_match использовать (<что-то>), то это <что-то> можно использовать во втором параметре как $#, где # - номер скобок.

Подробнее читайте http://phpclub.ru/detail/article/regexp_1 и http://phpclub.ru/detail/article/regexp_2.

Картинка с другого сайта.
Картинка с другого сайта.
McLighter
Дата: 29.06.2006 13:29:29
Ok! Спасибо теперь уже легче.
DocAl
Дата: 29.06.2006 14:25:19
Robert Tappan Moris
/.../
обще принятое обозначение регулярного выражения (например, javascript именно так отличает строку от регулярки)

Единственное, что стоит добавить, в PCRE вместо слэша можно использовать любой другой символ. Соответственно, повторение его будет признаком завершения регулярного выражения (или перехода к разделу модификаторов). Если же в самом шаблоне должен встречаться слэш, или тот, другой выбранный символ, его нужно будет экранировать обратным слэшом. Потому, при использовании регулярных выражений для обработки html-кода, удобнее брать не слэш, а другой символ, например, тильду.