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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2008, 21:35   #1
WebSQLNeeder
Пользователь
 
Регистрация: 28.06.2008
Сообщений: 12
По умолчанию Помощь с регулярными выражениями

Никак не могу разобраться с регулярными выражениями. Вроде бы делаю все как по ФАК а скрипт не работает

$hhh="Тестовая лаборатория SNR Roulements";
preg_match_all("/Тестовая (а-я){*} SNR/", $hhh, $fst);
foreach($fst[1] as $nam=>$val)
{
$htm1=$htm1 .$fst[1][$nam];
print $fst[1][$nam];
}

Но ничего не отображается ... Помогите понять в чем дело ... Как с этими долбаными регулярными выражениями работать
WebSQLNeeder вне форума Ответить с цитированием
Старый 07.07.2008, 21:36   #2
WebSQLNeeder
Пользователь
 
Регистрация: 28.06.2008
Сообщений: 12
По умолчанию

По идеи должно найти слово "лаборатория". Или же как правельно построить запрос?
WebSQLNeeder вне форума Ответить с цитированием
Старый 07.07.2008, 22:07   #3
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Дружно идем сюда: http://www.programmersforum.ru/showthread.php?t=22882
SkyM@n вне форума Ответить с цитированием
Старый 07.07.2008, 23:52   #4
WebSQLNeeder
Пользователь
 
Регистрация: 28.06.2008
Сообщений: 12
По умолчанию

Если не сложно подскажите покажите реальный пример как рег выражения должны работать ... Вот на реальном примере, например

$hhh="<div class=\"blue1\" align=\"left\">ВПЗ расширяет партнерство с Daimler AG</div></td>";

Это я взял урывок кода из сайта, который я буду парсить скриптом. Теперь делаю следующее:

preg_match_all("/(?<=>)[а-я]*(?=<\/div>)/", $hhh, $fst);

Но ничего не отображается ... Очень прошу если не сложно на этом конкретном примере покажите как работать с рег. выражениями. Буду очень благодарен.
WebSQLNeeder вне форума Ответить с цитированием
Старый 08.07.2008, 03:16   #5
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

PHP код:
<?php
$hhh 
"<td class=\"stih\">Мама мыла раму.</td>";
$pattern "#<td.*>(.*)</td#i";
$arr preg_match_all($pattern$hhh$matches);
print_r($matches);
?>
Вполне конкретный пример.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 08.07.2008, 09:02   #6
WebSQLNeeder
Пользователь
 
Регистрация: 28.06.2008
Сообщений: 12
По умолчанию

Спасибо. За вчерашнее чтение факов вроде ясности стало больше в регулярных выражениях, но все равно есть какие то ступоры, которые не дают дальше идти. Вот пример хтмл с сайта который нужно спарсить и оставить только текст между <!-- NewsLine_red::bodynews::start --> и <!-- NewsLine_red::bodynews::end -->

Цитата:
<!-- NewsLine_red::bodynews::start -->
В ходе визита представителей компании Daimler AG на Волжский подшипниковый завод были подтверждены плановые показатели производства подшипников для немецкого автоконцерна на 2008 год и намечены предварительные планы выпуска продукции на 2009-2011 годы. <br>
Сегодня Волжский подшипниковый завод производит для компании Daimler AG четыре типа подшипников. Однако у автоконцерна существует потребность в расширении сотрудничества с волжанами, увеличении, как номенклатуры продукции, так и объемов поставок. В частности, в 2009 году љна ВПЗ предполагается освоить производство семи новых типов подшипников для партнеров из Германии.
<!-- NewsLine_red::bodynews::end -->
Я пробую уже по разному, не получается

Цитата:
$pattern='/NewsLine.*>(.*?)<.*end/';
Хотя если взять сам текст скажем так

Цитата:
$pattern='/В(.*?)Германии/';
то находит текст. А почему не хочет в первом варианте? Что я делаю не так ?
WebSQLNeeder вне форума Ответить с цитированием
Старый 08.07.2008, 09:15   #7
WebSQLNeeder
Пользователь
 
Регистрация: 28.06.2008
Сообщений: 12
По умолчанию

Уже по разному пробую, не получается ... вот еще мои пробы, которые не принесли результата. Вопрос Почему?

Цитата:
$pattern='/[>\s]{*}(.*?)</';
то есть логика какая - начинаем искать с того места где закрывающая скобка тега идет и после нее несколько спец символов потипу перенос строки как у нас [>\s]{*}

дальше сам искомый текст, который заканчивается <

Да почему ж оно не находит и не работает ???
WebSQLNeeder вне форума Ответить с цитированием
Старый 09.07.2008, 00:37   #8
WebSQLNeeder
Пользователь
 
Регистрация: 28.06.2008
Сообщений: 12
По умолчанию

Кто может помочь? Ато я уже все перепробовал ... какое то колдовство - если сделать так

Цитата:
$pattern='/ходе(.*?)Германии/';
То работает. А вот если по тегам <!-- NewsLine_red::bodynews::start --> и <!-- NewsLine_red::bodynews::end --> не хочет ... В чем дело, не пойму.

Помогите если кто знает.
WebSQLNeeder вне форума Ответить с цитированием
Старый 09.07.2008, 17:57   #9
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

$pattern='#-->(.*)<!--#ism';
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь F1 Stanislav Общие вопросы Delphi 6 26.11.2007 00:29
Помощь!!!!!! Танюшка!!!!!!! Фриланс 7 25.10.2007 12:02
Задачка с регулярными выражениями Timmy PHP 1 25.06.2007 10:18