Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Исправить подсветку ключевых слов функцией ereg_replace()

Сообщения:  [1-10]    [11-20]  [21-21] 

 
 автор: confirm   (05.04.2013 в 17:43)   письмо автору
 
   для: segazav   (05.04.2013 в 17:37)
 

>"Строки и массивы, это типы данных с которыми вам придется сталкиваться постоянно, и не знать функций для работы с этими данными..."

Коли вы задаете здесь вопросы, то уж точно некоторым временем вы обладаете. Заходим сюда (и желательно почаще сюда заходить), и ищем ответ на вопрос - "как узнать длину строки?"

Это будет первым шагом к решению вашей задачи - Я не понимаю, как удалить короткие символы из строки

Вот только я сомневаюсь, что удалять их надо из строки в которой производится поиск. Но хотение пуще неволи, хотите, ну значит пусть будет так.

Итак - найдите сперва ответ на первый вопрос в руководстве РНР, затем далее.

PS. Коротких символов в природе не существует, они все короткие )

  Ответить  
 
 автор: segazav   (05.04.2013 в 17:37)   письмо автору
 
   для: confirm   (05.04.2013 в 16:07)
 

Я не понимаю, как удалить короткие символы из строки: $s = "Поздравления в стихах любимого мужчины"; - она и является ключевой и выводится обрезанной не будет, просто по ней идет сравнение с другими строками.

  Ответить  
 
 автор: confirm   (05.04.2013 в 16:07)   письмо автору
 
   для: segazav   (05.04.2013 в 15:35)
 

Я не знаю, что такое ключевая строка. Я вообще не понимаю, что на что вы меняете, так как не раз просил это объяснить, показать строки, но результата...

Если вы понимаете что нужно сделать, и то что я написал, это именно то что и нужно, меняйте, удаляйте, я ведь против ничего не имею. Я все пишу основываясь только на своих предположениях.

  Ответить  
 
 автор: segazav   (05.04.2013 в 15:35)   письмо автору
 
   для: confirm   (05.04.2013 в 11:08)
 

Но ведь можно убрать короткие слова не из результатов поиска, а из ключевой строки, все равно поиск ведется только по словам, а не по целой строке.

  Ответить  
 
 автор: confirm   (05.04.2013 в 11:08)   письмо автору
 
   для: segazav   (05.04.2013 в 00:42)
 

Ну да, взял и поверил. Как говорил лейтенант Коломбо, я не могу понять странности, которые меня всегда беспокоят. Время на форум для вопросов у вас есть, время экспериментировать с кодом, не понимая функций и тратя соответственно на это массу времени у вас есть, а времени зайти на официальный сайт РНР и изучить функции у вас нет. Странно.

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

Все правильно, так и должно быть, потому как функция str_ireplace (и не только эта из функций обработки строк) зависит от локали. Чтобы она работала корректно не только для английского, но и кириллицы, необходимо установить локаль.
<?
setlocale
(LC_ALL'Russian_Russia.1251');


А чтобы не подсвечивало короткие слова, нужно удалить из массива поиска элементы, длина которых меньше заданной.

Но str_ireplace() не занимается подсветкой, она производит замену, и как сказать, правильным ли будет, если результат поиска изменяет текст оригинала:

Поздравления в Стихах любимого мужчины

Правильно ли удалять "короткие" слова из результата, если это действительно поиск и он производится по логике "И".

  Ответить  
 
 автор: segazav   (05.04.2013 в 01:15)   письмо автору
 
   для: segazav   (05.04.2013 в 00:42)
 

Ещё хотелось бы как то исключить из подсветки слова меньше 2-х символов, но не могу сообразить, как правильно применить strlen() в данном примере... а то все предлоги тоже подсвечивает((

  Ответить  
 
 автор: segazav   (05.04.2013 в 00:42)   письмо автору
 
   для: confirm   (05.04.2013 в 00:17)
 

Поверьте, иногда просто не хватает времени на плотное изучение PHP, да и забываешь все со временем.
Мне нужна была подсветка точных совпадений слов и с Вашей помощью это получилось, спасибо Вам большое!!!

Но я не понял одного, вроде str_ireplace() не чувствительна к регистру, но если так:


<?php 
$s 
"Поздравления в стихах любимого мужчины";
$search explode(" ""Cтихах мужчины");
$replace explode('|''<b style="background:#FFFF00;">'.implode('</b>|<b style="background:#FFFF00;">'$search).'</b>');
echo 
str_ireplace($search$replace$s);
?>


то "...стихах..." уже не выделяет.

Можно ли как то это исправить?

  Ответить  
 
 автор: confirm   (05.04.2013 в 00:17)   письмо автору
 
   для: segazav   (05.04.2013 в 00:01)
 

Зачем? Вы прочтите о функции str_replace, ее аргументах, каких типов могут быть ее аргументы, и как производится замена. Ответьте на свой вопрос - нужно ли разбивать на массив, гонять их циклом, если строка поиска и так разбивается на массив?

Вообще, изучайте код примеров, которые вам дают, читая о функциях из примеров. Надо же как-то учится понимать код, и без знания работы функций, на одних подсказках на "как такое сделать?" вы далеко не уедете.

Что вы там хотите подсветить и что значит поиск в вашем случае.... В предложениях:

Рыбалка на природе, это полезно
и
Рыбалка, охота - снаряжения для активного отдыха

поиск и подсветка слов по искомому "рыбалка на природе", как этого вы хотите, подсветит слово "Рыбалка" в обеих предложениях, хотя второе предложение имеет совсем иной смысл. Поэтому еще вопрос, чего вы там пытаетесь подсветить, тем более, что конкретных строк вы так и не показали.

Так что думайте, размышляйте сами, а этот пример основан только на моих "предположениях".

  Ответить  
 
 автор: segazav   (05.04.2013 в 00:01)   письмо автору
 
   для: confirm   (04.04.2013 в 23:57)
 

Ага, понял спасибо!
А как сделать вышеуказанный код не регистрозависимым?

  Ответить  
 
 автор: confirm   (04.04.2013 в 23:57)   письмо автору
 
   для: segazav   (04.04.2013 в 23:48)
 

Ну правильно, это и должно вывести, это ведь пример, и чтобы отобразить строку результирующую и, что замена произошла корректно, html-код замены заменяется на html-сущности. Уберите из примера функцию htmlspecialchars(), будет отображено жирным шрифтом.

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-21] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования