Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2014, 01:05   #1
ZoxWatt
Пользователь
 
Регистрация: 15.02.2012
Сообщений: 17
По умолчанию регулярные выражения

есть сайт, с помощью которого пользователь может фильтровать RSS рассылки по определенным тегам(словам, сочетанием слов). т.е. он вбивает RSS ссылку, вбивает тег, например "море", ему выводятся только те посты, где содержится слово "море". вопрос: как сделать так, чтобы потльзователь в фильтре мог использовать регулярные выражения, например, он вбивает тег "море+отдых", а ему высвечиваются посты, которые содержат одновременно слова "море" и "отдых". вот код:
PHP код:
if($sort=="6"){

$Query = ("SELECT * FROM `rss` WHERE `user`='{$_SESSION['pmail']}'");
$Result mysql_db_query ($DBName$Query$Link);
while (
$datas mysql_fetch_array ($Result)) {
#echo $datas[url];



$url $datas[url];    //адрес RSS ленты


$xml xml_parser_create();    //создаёт XML-разборщик
xml_parser_set_option($xmlXML_OPTION_SKIP_WHITE1);    //устанавливает опции XML-разборщика
xml_parse_into_struct($xmlfile_get_contents($url), $element$index);    //разбирает XML-данные в структуру массива
xml_parser_free($xml);    //освобождает XML-разборщик

$count count($index["TITLE"])-1;    //число проходов цикла.

for ($i=0$i $count$i++) {

$urls=$element[$index["GUID"][$i+1]]["value"];
$urls="";
$title=$element[$index["TITLE"][$i+1]]["value"];
$title=iconv('utf-8','cp1251',$title);

$desc=$element[$index["DESCRIPTION"][$i]]["value"];
$desc=iconv('utf-8','cp1251',$desc);

$re=0;
$Query2 = ("SELECT * FROM `tags` WHERE `user`='{$_SESSION['pmail']}'");
$Result2 mysql_db_query ($DBName$Query2$Link);

while (
$datas2 mysql_fetch_array ($Result2)) {
$fn=$datas2['tag'];
$mystring mb_strtolower($title);
$mystring2 mb_strtolower($desc);
$findme=mb_strtolower($fn);
if(
strstr($mystring$findme)) {$re=1;}
if(
strstr($mystring2$findme)) {$re=1;} 
}
if (
$re==1)
{
$tbldata.=<<<EOF
<tr class='tr' >
<td class='td' ><a href=
$urls>$title</a> 
<br>
$desc
<br>
</td>
</tr>
EOF;

if (p==3) p=3;
else p=3;
ZoxWatt вне форума Ответить с цитированием
Старый 24.11.2014, 08:16   #2
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,714
По умолчанию

Код показанный вами, не соответствует описанному вами алгоритму.
Если по этому коду то в таблицу tags для юзера надо добавить ещё один тэг.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 26.11.2014, 16:04   #3
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
море+отдых
Уверен, что это регулярное выражение? Если это так, то оно ищет не "море" и "отдых", а
Код:
моротдых
мореотдых
мореееееееееееееотдых
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения Артём555 C# (си шарп) 4 28.04.2013 14:02
Регулярные выражения Anton PHP 1 06.12.2012 11:18
регулярные выражения brulik67 PHP 4 24.06.2011 06:14
Регулярные выражения adwaer Общие вопросы .NET 4 24.02.2010 17:38