|
|
|
|
|
для: segazav
(05.04.2013 в 17:37)
| | >"Строки и массивы, это типы данных с которыми вам придется сталкиваться постоянно, и не знать функций для работы с этими данными..."
Коли вы задаете здесь вопросы, то уж точно некоторым временем вы обладаете. Заходим сюда (и желательно почаще сюда заходить), и ищем ответ на вопрос - "как узнать длину строки?"
Это будет первым шагом к решению вашей задачи - Я не понимаю, как удалить короткие символы из строки
Вот только я сомневаюсь, что удалять их надо из строки в которой производится поиск. Но хотение пуще неволи, хотите, ну значит пусть будет так.
Итак - найдите сперва ответ на первый вопрос в руководстве РНР, затем далее.
PS. Коротких символов в природе не существует, они все короткие ) | |
|
|
|
|
|
|
|
для: confirm
(05.04.2013 в 16:07)
| | Я не понимаю, как удалить короткие символы из строки: $s = "Поздравления в стихах любимого мужчины"; - она и является ключевой и выводится обрезанной не будет, просто по ней идет сравнение с другими строками. | |
|
|
|
|
|
|
|
для: segazav
(05.04.2013 в 15:35)
| | Я не знаю, что такое ключевая строка. Я вообще не понимаю, что на что вы меняете, так как не раз просил это объяснить, показать строки, но результата...
Если вы понимаете что нужно сделать, и то что я написал, это именно то что и нужно, меняйте, удаляйте, я ведь против ничего не имею. Я все пишу основываясь только на своих предположениях. | |
|
|
|
|
|
|
|
для: 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 в 00:42)
| | Ещё хотелось бы как то исключить из подсветки слова меньше 2-х символов, но не могу сообразить, как правильно применить strlen() в данном примере... а то все предлоги тоже подсвечивает(( | |
|
|
|
|
|
|
|
для: 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);
?>
|
то "...стихах..." уже не выделяет.
Можно ли как то это исправить? | |
|
|
|
|
|
|
|
для: segazav
(05.04.2013 в 00:01)
| | Зачем? Вы прочтите о функции str_replace, ее аргументах, каких типов могут быть ее аргументы, и как производится замена. Ответьте на свой вопрос - нужно ли разбивать на массив, гонять их циклом, если строка поиска и так разбивается на массив?
Вообще, изучайте код примеров, которые вам дают, читая о функциях из примеров. Надо же как-то учится понимать код, и без знания работы функций, на одних подсказках на "как такое сделать?" вы далеко не уедете.
Что вы там хотите подсветить и что значит поиск в вашем случае.... В предложениях:
Рыбалка на природе, это полезно
и
Рыбалка, охота - снаряжения для активного отдыха
поиск и подсветка слов по искомому "рыбалка на природе", как этого вы хотите, подсветит слово "Рыбалка" в обеих предложениях, хотя второе предложение имеет совсем иной смысл. Поэтому еще вопрос, чего вы там пытаетесь подсветить, тем более, что конкретных строк вы так и не показали.
Так что думайте, размышляйте сами, а этот пример основан только на моих "предположениях". | |
|
|
|
|
|
|
|
для: confirm
(04.04.2013 в 23:57)
| | Ага, понял спасибо!
А как сделать вышеуказанный код не регистрозависимым? | |
|
|
|
|
|
|
|
для: segazav
(04.04.2013 в 23:48)
| | Ну правильно, это и должно вывести, это ведь пример, и чтобы отобразить строку результирующую и, что замена произошла корректно, html-код замены заменяется на html-сущности. Уберите из примера функцию htmlspecialchars(), будет отображено жирным шрифтом. | |
|
|
|
|