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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2010, 18:38   #1
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию Проблема с регулярным выражением

Добрый день.
Помогите написать регулярку.
Вкратце опишу задачу: Есть php файл(11000 строк),вот часть его содержимого
Код:
<tr><th width=30><input <?=cr($arw['a1_2'],1)?> type="checkbox" name="a1_2" value="1"><td>25-30 лет        <td class="qHint"><a href="#а2">А-2</a>
<tr><th width=30><input <?=cr($arw['a1_3'],1)?> type="checkbox" name="a1_3" value="1"><td>30-35        <td class="qHint"><a href="#а2">А-2</a>
,
* - это то что мне надо получить(то есть нестационарная часть)
Код:
<tr><th width=30><input <?=cr($arw['*'],1)?> type="checkbox" name="*" value="1"><td> * <td class="qHint"><a href="#а2">А-2</a>
Вот то что пока написал:
Код:
$st=file("text.php");
$mass=array();
foreach($st as $key=>$value){
    preg_match_all("/<input <\?=cr(\$arw['(.*?)'],1)\?> type=\"checkbox\" name=\"(.*?)\" value=\"1\"><td>(.*?)<td>/",$value,$mass);
    
}
Но это не работает, проблема в регулярном выражение ,но правильно написать знаний не хватает.
ssdm вне форума Ответить с цитированием
Старый 24.02.2010, 19:12   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

а что это у вас вложенный td?

upd.: Пробуйте так:
Код:
\['([a-z0-9_]+).+name="([a-z0-9_]+).+<td>([a-z0-9-а-я_\ ]+)

Последний раз редактировалось SkyM@n; 24.02.2010 в 19:22.
SkyM@n вне форума Ответить с цитированием
Старый 24.02.2010, 20:51   #3
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

неа.. не сработал..
ssdm вне форума Ответить с цитированием
Старый 24.02.2010, 20:57   #4
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Что именно не пашет? Вообще не одна круглая скобка не сработала?
Маловероятно.
SkyM@n вне форума Ответить с цитированием
Старый 24.02.2010, 21:14   #5
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Код:
$st=file("text.php");
$mass=array();
foreach($st as $key=>$value){
    /*preg_match("/<input <\?=cr(\$arw['(.*?)'],1)\?> type=\"checkbox\" name=\"(.*?)\" value=\"1\"><td>(.*?)<td>/",$value,$mass);*/
    preg_match("\['([a-z0-9_]+).+name=\"([a-z0-9_]+).+<td>([a-z0-9-а-я_\ ]+)",$value,$mass);
   
}
echo count($mass[0])."<br>";
count ноль выводит
ssdm вне форума Ответить с цитированием
Старый 24.02.2010, 21:20   #6
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Попробуйте так:
Код:
\['([a-z0-9_]+).+name=\"([a-z0-9_]+).+<td>([a-z0-9\-а-я_\ ]+)
SkyM@n вне форума Ответить с цитированием
Старый 24.02.2010, 21:29   #7
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

тоже самое..
ssdm вне форума Ответить с цитированием
Старый 24.02.2010, 21:33   #8
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Странно, у меня работает: http://gskinner.com/RegExr/
SkyM@n вне форума Ответить с цитированием
Старый 24.02.2010, 21:49   #9
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Тогда попробуйте через explode
motorway вне форума Ответить с цитированием
Старый 24.02.2010, 21:58   #10
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

SkyM@n
и вправду работает, я просто с ПХП затупил слегка ) только весьма странно работает... Не все находит. Вот пример:
Код:
<tr><th width=30><input <?=cr($arw['a2_1'],1)?> type="checkbox" name="a2_1" value="1"><td>Да        <td class="qHint"><a href=""></a>
<tr><th width=30><input <?=cr($arw['a2_2'],1)?> type="checkbox" name="a2_2" value="1"><td>Нет        <td class="qHint"><a href=""></a>
<tr><th width=30><input <?=cr($arw['a1_2'],1)?> type="checkbox" name="a1_2" value="1"><td>25-30 лет        <td class="qHint"><a href="#а2">А-2</a>
<tr><th width=30><input <?=cr($arw['a1_3'],1)?> type="checkbox" name="a1_3" value="1"><td>30-35        <td class="qHint"><a href="#а2">А-2</a>
motorway
Наверное прийдется через implode, хотя это и не решает задачу, но заметно упрощает
ssdm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с регулярным выражением ssdm PHP 3 12.01.2010 18:26
Помогите с регулярным вырежением [EX]n1 Помощь студентам 2 04.01.2010 15:34
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37