Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418

Нужно найти в файле

04.02.2013, 16:21. Показов 2923. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть файл test.html в нём хранится информация, как можно найти информацию которую я передаю через post?
PHP
1
2
3
4
5
6
7
8
9
10
11
if($_POST['teston']){ 
 
$test = $_POST['test'];
 
file_get_contents('http://site.ru/test.html');     
 
preg_match_all("/^[a-zA-Z0-9]*$/", $test , $mathces); 
 
echo $mathces ;  
 
}
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2013, 16:21
Ответы с готовыми решениями:

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

Нужно найти самое длинное слово в файле
Уже час не могу понять в чем ошибка, все компилируется, но выдает лишь последний символ. #include<iostream> ...

В текстовом файле нужно найти самое длинное предложение
в текстовом файле нужно найти самое длинное предложение #include <stdio.h> #include <stdlib.h> #include <math.h> #include...

32
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
09.02.2013, 19:09  [ТС]
Студворк — интернет-сервис помощи студентам
То что нужно, а при выводе результата можно вообще убрать Array ( [0] => а выводить только текст? А то в шаблон такое не хорошо записывать.
0
 Аватар для dionisp
22 / 15 / 1
Регистрация: 31.01.2013
Сообщений: 49
09.02.2013, 19:15
Вот код:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$_POST['test']="тест";
 
if (isset($_POST['test'])) {
    $source = file_get_contents('test.html');
    $re = '/(?<=<table cellspacing="0" cellpadding="0" width="100%">).*' . $_POST['test'] . '.*(?=<\/table>)/is';
    $num = preg_match_all($re, $source, $match);
    if (false === $num)
        echo 'Ошибка в регулярном выражении';
    elseif ($num > 0) {
        echo 'Найдено ', $num, ' раз.<br>';
        foreach ($match[0] as $v) echo $v,'<br>';
    }
    else
        echo 'Не найдено';
}
 
?>
1
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
09.02.2013, 19:49  [ТС]
Огромное спасибо, всё работает как нужно. Если ещё что нибудь будет не понятно напишу.)

Добавлено через 24 минуты
Ещё такой вопрос, находит 200 записей, а в
PHP
1
echo 'Найдено ', $num, ' раз.<br>';
выводит Найдено 1 раз. в чём проблема?
0
 Аватар для dionisp
22 / 15 / 1
Регистрация: 31.01.2013
Сообщений: 49
10.02.2013, 10:49
Цитата Сообщение от Makson Посмотреть сообщение
выводит Найдено 1 раз. в чём проблема?
Исправим ошибку в регулярном выражении. Нужно добавить жадный квантификатор «?». Без него, регулярное выражение будет искать самый последний закрывающий тег </table>. «?» заставит квантификатор повторения «*» использовать минимальную подходящую строку.
Теперь количество найденных строк должно выводиться верно.
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$_POST['test']="тест";
 
if (isset($_POST['test'])) {
    $source = file_get_contents('test.html');
    $re = '/(?<=<table cellspacing="0" cellpadding="0" width="100%">).*?' . $_POST['test'] . '.*?(?=<\/table>)/is';
    $num = preg_match_all($re, $source, $match);
    if (false === $num)
        echo 'Ошибка в регулярном выражении';
    elseif ($num > 0) {
        echo 'Найдено ', $num, ' раз.<br>';
        foreach ($match[0] as $v) echo $v,'<br>';
    }
    else
        echo 'Не найдено';
}
 
?>
1
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
10.02.2013, 17:47  [ТС]
Работает как надо) Спасибо большое,что помогаете)

Добавлено через 3 часа 54 минуты
Ещё появился вопрос, между тегами <table cellspacing="0" cellpadding="0" width="100%"> </table> по мимо текста, нужно находить ещё и ссылку и выводить её на сайте, вот пример ссылки
HTML5
1
<input type="hidden" id="изменный контент" value="http://изменный контент.mp3,изменный конткент" />
для этого думаю нужно ещё 1 регулярку сделать.
0
 Аватар для dionisp
22 / 15 / 1
Регистрация: 31.01.2013
Сообщений: 49
10.02.2013, 17:54
Приведите пожалуйста пример файла test.html с искомой строкой и ссылкой, внутри тега <table>.
0
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
10.02.2013, 18:05  [ТС]
HTML5
1
2
3
4
5
6
<table cellspacing="0" cellpadding="0" width="100%">
               test - новый
               <input type="hidden" id="nuz312_412" value="http://31.r12/rqw2/r1.mp3,609" /></table>
               <table cellspacing="0" cellpadding="0" width="100%">
               test - новый http://test.ru
               <input type="hidden" id="nf21_412" value="http://46.r1242/rqwfrew2/rrew1.mp3,619" /></table>
Добавлено через 3 минуты
ну тут
HTML5
1
46.r1242/rqwfrew2/rrew1
может быть написано всё что угодно
0
 Аватар для dionisp
22 / 15 / 1
Регистрация: 31.01.2013
Сообщений: 49
10.02.2013, 18:34
Код:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$_POST['test']="test";
 
if (isset($_POST['test'])) {
    $source = file_get_contents('test.html');
        $re = '/(?<=<table cellspacing="0" cellpadding="0" width="100%">).*?' . $_POST['test'] . '.*?((https?:\/\/)?([\w\.]+)\.([a-z]{2,6}\.?)(\/[\w\.]*)*\/?).*?(?=<\/table>)/is';
    $num = preg_match_all($re, $source, $match);
    if (false === $num)
        echo 'Ошибка в регулярном выражении';
    elseif ($num > 0) {
        echo 'Найдено ', $num, ' раз.<br>';
                foreach ($match[0] as $k=>$v) echo $v,' URL: ',$match[1][$k],'<br>';
    }
    else
        echo 'Не найдено';
}

Только обратите внимание, что в домене не должно быть цифр.
http://31.r12 быть не может. Замените на http://31.ru, например.

Если бы вы подробнее описали задачу, можно было бы написать более оптимальный код.
1
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
10.02.2013, 18:54  [ТС]
Он выводит все ссылки что есть в table а нужно конкретно из
HTML5
1
 <input type="hidden" id="nuz312_412" value="
просто в table может быть много ссылок, а нужно конкретно из input
0
 Аватар для dionisp
22 / 15 / 1
Регистрация: 31.01.2013
Сообщений: 49
10.02.2013, 19:23
Если нужно значение атрибута value, то это ещё проще:
PHP
1
$re = '/(?<=<table cellspacing="0" cellpadding="0" width="100%">).*?' . $_POST['test'] . '.*?<input.*?value="(.*?)".*?(?=<\/table>)/is';
1
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
10.02.2013, 19:51  [ТС]
ищет как надо, но вот ещё 1 проблема, ссылка http://31.r12/rqw2/r1.mp3,609 а нужно вытаскивать только http://31.ru/rqw2/r1.mp3 то есть всё что до запятой в value
0
 Аватар для dionisp
22 / 15 / 1
Регистрация: 31.01.2013
Сообщений: 49
10.02.2013, 20:04
Можно так:
PHP
1
$re = '/(?<=<table cellspacing="0" cellpadding="0" width="100%">).*?' . $_POST['test'] . '.*?<input.*?value="(.*?)(?:"|,).*?(?=<\/table>)/is';
1
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
10.02.2013, 20:08  [ТС]
Большое вам спасибо, всё работает как нужно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.02.2013, 20:08

Нужно найти в файле размер самой большой строки
Есть некий текстовой файл с текстом.Нужно найти в нем размер самой большой строки.Решил я узнать номера элементов с символом конца строки...

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

Найти в текстовом файле строку по заданному слову и заменить ей определённую часть строки в другом файле
Всех с Новым Годом! Наверное избитая тема, но все же... Задача такая: Существует два файла: log.txt и run.bat. Необходимо в log.txt...

Тема «текстовый файл» (в файле хранятся целые числа). В файле найти сумму квадратов элементов
,,,

В текстовом файле найти строку с наибольшим количеством символов (считать, что такая строка в файле одна)
Всем привет)) В текстовом файле найти строку с наибольшим количеством символов (считать, что такая строка в файле одна).


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru