[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: preg_match
ulmost_clever
preg_match("/&kind=(.*?)&/", $mytext2, $match)

Хочу вывести все, что встречается между &kind и &. Но выводится в том числе и &kind=&. Как исправить?



Спустя 13 минут, 40 секунд (7.05.2012 - 12:45) nugle написал(а):
разбирай через preg_match_all, первый индекс массива и будет твой результат

Спустя 43 минуты, 38 секунд (7.05.2012 - 13:28) ulmost_clever написал(а):
может я не правильно объяснил.
к примеру в строке есть &kind=учу php&, то выводится учу php
а если в строке есть &kind=&, то надо чтобы это проигнорировалось.

Спустя 42 минуты, 59 секунд (7.05.2012 - 14:11) nugle написал(а):
вместо (.*?) - (.+)

Спустя 8 минут, 38 секунд (7.05.2012 - 14:20) ulmost_clever написал(а):
я когда так делаю, то у меня начинает выводить еще и что после этого выражения стоит, до конца строки

Спустя 4 минуты, 8 секунд (7.05.2012 - 14:24) ulmost_clever написал(а):
$rewrite=fopen("log2.txt","r");
$sort=fopen("sort.txt","w");
while (!feof($rewrite))
{
$mytext2=fgets($rewrite); //читаем строку


if(preg_match("/&kind=(.+)&/", $mytext2, $match))
{
fwrite($sort,"/$match[1]");
$k++;
if(preg_match("/&kind=&/", $mytext2, $match))//считаем оборванные запросы
{
$d++;
}
}
else $s++;
}
$all=$k-$d;
echo "<div style='border:1 px solid black;width:430px;text-align:center;margin-bottom:2px;background-color:#ddd'>Оборванных запросов: $s</div>";
echo "<div style='border:1 px solid black;width:430px;text-align:center;margin-bottom:2px;background-color:#ddd'>Непустых запросов: $all</div>";
echo "<div style='border:1 px solid black;width:430px;text-align:center;margin-bottom:2px;background-color:#ddd'>Пустых запросов: $d</div>";
fclose($rewrite);
fclose($sort);

вот файл: http://depositfiles.com/files/0mylom2if

Спустя 33 минуты, 17 секунд (7.05.2012 - 14:57) ulmost_clever написал(а):
Задача изменилась, я кажется понялиз-за чего возникает путаница, теперь нужно заменить &kind=ololo& на &kind=ololo+
делал так:
 $text2=preg_replace("/&kind=(.*?)&/","/&kind=(.*?)+/",$text);
но что-то не работает

Спустя 3 минуты, 49 секунд (7.05.2012 - 15:01) nugle написал(а):
 $text2=preg_replace("/&kind=(.*?)&/","/&kind=$1+/",$text);

Спустя 11 минут (7.05.2012 - 15:12) ulmost_clever написал(а):
получилось, только почему-то в некоторых случаях работает не как надо:

1.если у нас есть &kind=&002S21P04=& мне надо, чтобы было &kind=+002S21P04=& а получается &kind=&002S21P04=+
Цитата
с этим разобрался, сделал preg_replace("/&kind=(.*?)&/","/&kind=$1+/",$text);


2. если у нас есть &kind=(A=Семенова$)& то не меняется, я заметил,что не меняется всегда если после &kind= стоит первая скобка, если стоит просто слово, то все норм.

Спустя 17 минут, 12 секунд (7.05.2012 - 15:29) alexbel2404 написал(а):
echo $match[1];

к первому посту

Спустя 4 часа, 35 минут (7.05.2012 - 20:04) ulmost_clever написал(а):
Цитата (ulmost_clever @ 7.05.2012 - 13:12)
получилось, только почему-то в некоторых случаях работает не как надо:

1.если у нас есть &kind=&002S21P04=& мне надо, чтобы было &kind=+002S21P04=& а получается &kind=&002S21P04=+
Цитата
с этим разобрался, сделал preg_replace("/&kind=(.*?)&/","/&kind=$1+/",$text);


2. если у нас есть &kind=(A=Семенова$)& то не меняется, я заметил,что не меняется всегда если после &kind= стоит первая скобка, если стоит просто слово, то все норм.


2 проблема еще актуальна =(

Спустя 3 часа, 44 минуты, 34 секунды (7.05.2012 - 23:49) neadekvat написал(а):
Цитата (ulmost_clever @ 7.05.2012 - 17:12)
почему-то в некоторых случаях работает не как надо:

Не почему-то, а потому что так проипсано в регулярном выражении.
Сформулируй задачу как следует.

Спустя 15 минут, 34 секунды (8.05.2012 - 00:05) inpost написал(а):
.*? - любой символ любое количество раз (включая 0) И знак вопроса - отключает жадный поиск
от 0 до бесконечности - это *, от 1 до бесконечности - это +.
Если в условии 1 или более символов, 0 не подходит, то поменяй * на +. При этом подумай сам, нужно ли отключать жадный поиск тебе...
Не забудь, что для кодировки UTF-8 нужен модификатор u
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.