Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 1
Регистрация: 04.03.2012
Сообщений: 101

preg_match

08.05.2012, 19:48. Показов 2097. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
preg_match("/&kind=(.*?)&/", $mytext2, $match)
Если &kind=&, выводит и это, как сделать чтобы игнорировал такой вид?
пробовал
PHP
1
preg_match("/&kind=(.+?)&/", $mytext2, $match)
некорректно работает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2012, 19:48
Ответы с готовыми решениями:

preg_match
Приветствую, понадобилось спарсить текст, текст сам такой "{"access_token":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3"}"...

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

preg_match
обьясните пожалуйста что означает данное выражение. if(!preg_match('/^http\:\/\/(+)\/(.*)$/',RNS_URL,$match)) return false; ...

10
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
08.05.2012, 19:52
Если у вас после kind идут числовые и буквенные значения, можно написать так:
PHP
1
preg_match("/&kind=([a-z0-9]*?)/i", $mytext2, $match)
1
1 / 1 / 1
Регистрация: 04.03.2012
Сообщений: 101
08.05.2012, 19:54  [ТС]
Может быть что угодно, даже пробел
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
08.05.2012, 19:58
Цитата Сообщение от almostclever Посмотреть сообщение
Может быть что угодно, даже пробел
Если что угодно, то вот, вроде так:
PHP
1
preg_match("/&kind=([^&])/i", $mytext2, $match)
1
1 / 1 / 1
Регистрация: 04.03.2012
Сообщений: 101
08.05.2012, 20:03  [ТС]
странно, все равно выводятся &kind=&, ничего понят не могу
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
08.05.2012, 20:09
Вот гаписал такой скрипт, он нормально и верно выводит "В $url не содержится знака & после знака "равно"":
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?
    $url = "данные перед&kind=данные после";
    
    if( preg_match("/&kind=([^&])/i", $url) )
    {
        echo 'В $url не содержится знака & после знака "равно"';
    }
    else
    {
        echo 'В $url содержится знак & после знака "равно"';
    }
?>
1
1 / 1 / 1
Регистрация: 04.03.2012
Сообщений: 101
08.05.2012, 20:22  [ТС]
вот этот кусок моего кода:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$rewrite=fopen("log2.txt","r");
$sort=fopen("sort.txt","w");
while (!feof($rewrite))
{
$mytext2=fgets($rewrite);
if(preg_match("/&kind=([^\&]*?)&/i", $mytext2, $match))
{
echo "$match[0]<br>";
//fwrite($sort,"~$match[0]");
$notempty++;
}
else $empty++;
}
echo "<div style='border:1 px solid black;width:430px;text-align:center;margin-bottom:2px;background-color:#ddd'>Непустых запросов: $notempty</div>";
echo "<div style='border:1 px solid black;width:430px;text-align:center;margin-bottom:2px;background-color:#ddd'>Пустых запросов: $empty</div>";
fclose($rewrite);
fclose($sort);
вот что сортирует:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
25.02.2002^22:58.27^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^C21COM=Enter&I21DBN=MILS_FREE
25.02.2002^22:58.34^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21CNR=20&S21FMT=briefw&T21VAL=002&002S21P02=1&002S21P03=K=&002S21P05=Ключевые слова&kind=Бухгалтерский учет&002S21P04=&002S21L0G=0&002S21P01=3&033S21P02=1&033S21P03=A=&033S21P05=Автор&033S21P06=1&kind=&006S21P01=2&006S21P03=V=&006S21P05=Вид документа&kind=&004S21P01=1&004S21P03=B=&004S21P05=ISSN/ISBN&kind=&005S21P03=G=&005S21P05=Год издания&kind=&C21COM=Поиск
25.02.2002^22:59.14^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21CNR=20&S21FMT=briefw&T21VAL=002&002S21P02=1&002S21P03=K=&002S21P05=Ключевые слова&kind=Бухгалтерский учет&002S21P04=&002S21L0G=0&002S21P01=3&033S21P02=1&033S21P03=A=&033S21P05=Автор&033S21P06=1&kind=&006S21P01=2&006S21P03=V=&006S21P05=Вид документа&kind=&004S21P01=1&004S21P03=B=&004S21P05=ISSN/ISBN&kind=&005S21P03=G=&005S21P05=Год издания&kind=&C21COM=Поиск
25.02.2002^22:59.17^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^I21DBN=MILS_FREE&C21COM=Show&N21STN=1&N21FMT=fullw_&001N21NUM=40
25.02.2002^22:59.24^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^I21DBN=MILS_FREE&C21COM=Show&N21STN=1&N21FMT=fullw_&001N21NUM=40
25.02.2002^23:00.08^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21FMT=fullw&S21CNR=20&002S21P04=&002S21P01=3&006S21P01=2&002S21L0G=1&006S21P03=V=&006S21P05=Вид документа&002S21P02=1&002S21P03=K=&002S21P05=Ключевые слова&kind=Бухгалтерский учет&C21COM=Поиск
25.02.2002^23:00.24^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21FMT=fullw&S21CNR=20&kind=(K=бухгалтерск$)*(K=учет$)&S21UND=бухгалтерск|учет&S21STN=21&C21COM=Далее
25.02.2002^23:01.15^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21FMT=fullw&S21CNR=20&kind=(K=бухгалтерск$)*(K=учет$)&S21UND=бухгалтерск|учет&S21STN=41&C21COM=Далее
25.02.2002^23:01.32^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21FMT=fullw&S21CNR=20&kind=(K=бухгалтерск$)*(K=учет$)&S21UND=бухгалтерск|учет&S21STN=61&C21COM=Далее
25.02.2002^23:01.36^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21FMT=fullw&S21CNR=20&kind=(K=бухгалтерск$)*(K=учет$)&S21UND=бухгалтерск|учет&S21STN=81&C21COM=Далее
25.02.2002^23:01.39^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21FMT=fullw&S21CNR=20&kind=(K=бухгалтерск$)*(K=учет$)&S21UND=бухгалтерск|учет&S21STN=101&C21COM=Далее
25.02.2002^23:01.43^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21FMT=fullw&S21CNR=20&kind=(K=бухгалтерск$)*(K=учет$)&S21UND=бухгалтерск|учет&S21STN=121&C21COM=Далее
25.02.2002^23:01.45^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21FMT=fullw&S21CNR=20&kind=(K=бухгалтерск$)*(K=учет$)&S21UND=бухгалтерск|учет&S21STN=141&C21COM=Далее
25.02.2002^23:02.01^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21FMT=fullw&S21CNR=20&kind=(K=бухгалтерск$)*(K=учет$)&S21UND=бухгалтерск|учет&S21STN=161&C21COM=Далее
25.02.2002^23:06.20^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^C21COM=Enter&I21DBN=MILS_FREE
25.02.2002^23:06.29^Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)^&I21DBN=MILS_FREE&S21CNR=20&S21FMT=briefw&T21VAL=002&002S21P02=1&002S21P03=K=&002S21P05=Ключевые слова&kind=&002S21P04=&002S21L0G=0&002S21P01=3&033S21P02=1&033S21P03=A=&033S21P05=Автор&033S21P06=1&kind=Семенова&006S21P01=2&006S21P03=V=&006S21P05=Вид документа&kind=&004S21P01=1&004S21P03=B=&004S21P05=ISSN/ISBN&kind=&005S21P03=G=&005S21P05=Год издания&kind=&C21COM=Поиск
вот что получается:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
&kind=Бухгалтерский учет&
&kind=Бухгалтерский учет&
&kind=Бухгалтерский учет&
&kind=(K=бухгалтерск$)*(K=учет$)&
&kind=(K=бухгалтерск$)*(K=учет$)&
&kind=(K=бухгалтерск$)*(K=учет$)&
&kind=(K=бухгалтерск$)*(K=учет$)&
&kind=(K=бухгалтерск$)*(K=учет$)&
&kind=(K=бухгалтерск$)*(K=учет$)&
&kind=(K=бухгалтерск$)*(K=учет$)&
&kind=(K=бухгалтерск$)*(K=учет$)&
&kind=&
Добавлено через 6 минут
Цитата Сообщение от Lyodik Посмотреть сообщение
Вот гаписал такой скрипт, он нормально и верно выводит "В $url не содержится знака & после знака "равно"":
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?
    $url = "данные перед&kind=данные после";
    
    if( preg_match("/&kind=([^&])/i", $url) )
    {
        echo 'В $url не содержится знака & после знака "равно"';
    }
    else
    {
        echo 'В $url содержится знак & после знака "равно"';
    }
?>
У тебя перепутано echo у if и else
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
08.05.2012, 20:24
Замените в вашем коде это:
PHP
1
if(preg_match("/&kind=([^\&]*?)&/i", $mytext2, $match))
На это:
PHP
1
if(preg_match("/&kind=([^&])/i", $mytext2, $match))
Добавлено через 1 минуту
Цитата Сообщение от almostclever Посмотреть сообщение
У тебя перепутано echo у if и else
Нет, не перепутано
1
1 / 1 / 1
Регистрация: 04.03.2012
Сообщений: 101
08.05.2012, 20:31  [ТС]
выводит только первый символ =(
и все-равно учитываются пустые
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
08.05.2012, 20:37
У себя всё протестировал с вашим скриптом, действительно, выводися только один символ. Вот так работает:
PHP
1
preg_match("/&kind=([^&]{1,})/i", $mytext2, $match)
1
1 / 1 / 1
Регистрация: 04.03.2012
Сообщений: 101
08.05.2012, 21:06  [ТС]
Вроде как надо работает.спасибо. только прошу помочь теперь проблема такая появилась
после того как я записываю в файл все что между &kind...&, я считываю этот файл и вывожу статистику повторений:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$rewrite=fopen("log2.txt","r");
$sort=fopen("sort.txt","w");
while (!feof($rewrite))
{
$mytext2=fgets($rewrite);
if(preg_match("/&kind=([^&]{1,})&/i", $mytext2, $match))
{
fwrite($sort,"~$match[1]");
$notempty++;
}
else $empty++;
}
echo "<div style='border:1 px solid black;width:430px;text-align:center;margin-bottom:2px;background-color:#ddd'>Непустых запросов: $notempty</div>";
echo "<div style='border:1 px solid black;width:430px;text-align:center;margin-bottom:2px;background-color:#ddd'>Пустых запросов: $empty</div>";
fclose($rewrite);
fclose($sort);
 
$kindtext=file_get_contents("sort.txt",FILE_SKIP_EMPTY_LINES); //копируем содержимое sort.txt в строку
$kindtext=trim($kindtext,"~");
$kinds=explode("~",$kindtext); //разбиваем на части массива
asort($kinds); //сортируем по алфавиту
foreach($kinds as $val2)
$pos2[$val2]=@substr_count($kindtext, $val2);
foreach($pos2 as $key => $cal2)
echo "<div style='border:1 px solid black;width:430px;text-align:center;margin-bottom:2px;background-color:white'>$key - запросов: $cal2</div>";
Получается вот так:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- запросов: 24
Акунин - запросов: 1
газета Томский вестник 2001 - запросов: 1
журнал Финансы 2000 - запросов: 1
МАЙБОРОДА Т. В. - запросов: 2
книга Акунина коронация - запросов: 1
экономика Австралии - запросов: 1
(((K=бюджет$)) * ((V=KN))) * ((G=2001)) - запросов: 1
((K=бухгалтерск$)+(K=учет$)) * ((V=01)) - запросов: 4
((K=томск$)) * ((V=08)) - запросов: 1
((K=экологи$)+(K=промышленност$)) * ((V=02)) - запросов: 3
((V=11)) * ((G=2002)) - запросов: 2
(A=Пушкин$) - запросов: 2
(A=Семенова$) - запросов: 4
(A=пушкин$) - запросов: 17
(ALL=unix$) - запросов: 1
(ALL=австрали$) - запросов: 1
а если сделать к примеру вот так: fwrite($sort,"~+$match[1]+");, то есть выделить слова плюсами по бокам, получается:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
+ + - запросов: 1
+ Акунин+ - запросов: 1
+ газета Томский вестник 2001+ - запросов: 1
+ журнал Финансы 2000+ - запросов: 1
+ МАЙБОРОДА Т. В.+ - запросов: 2
+ книга Акунина коронация+ - запросов: 1
+ экономика Австралии+ - запросов: 1
+(((K=бюджет$)) * ((V=KN))) * ((G=2001))+ - запросов: 1
+((K=бухгалтерск$)+(K=учет$)) * ((V=01))+ - запросов: 4
+((K=томск$)) * ((V=08))+ - запросов: 1
+((K=экологи$)+(K=промышленност$)) * ((V=02))+ - запросов: 3
+((V=11)) * ((G=2002))+ - запросов: 2
+(A=Пушкин$)+ - запросов: 2
Вот так и должно быть, так как у нас только один запрос начинается с пробела.
в чем причина??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2012, 21:06
Помогаю со студенческими работами здесь

Https в preg_match
Как можно добавить https в preg_match(&quot;/^(http:\/\/()+(\.()+)*(\.()+)+)?$/&quot;,$url) ? Добавлено через 14 минут вопрос решила...

Составить preg_match
Помогите пожалуйста составить preg_match для вырезания чисел в &quot;img_id&quot;:числа Код:...

Preg_match array
Здравствуйте, как в preg_match использовать массив Надо сделать что-то типо такого,

preg_match offset
Доброе время суток, подскажите, пожалуйста, как сделать пропуск первого вхождения?Т.е. есть документ с содержимым, например: &lt;body&gt;...

Проблемы по preg_match
Увожаемы форумчани у меня возникла проблема с preg_match. НЕ могу из полученого текста - ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru