ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #981  
Старый 05.02.2010, 17:47
Nosfer
Новичок
Регистрация: 10.01.2007
Сообщений: 16
Провел на форуме:
109680

Репутация: 2
По умолчанию

Задача: составить регулярку.
Условие, максимально 4 параметра 10D 10H 10M 10S, но все 4 никогда не встрчаются, обычно не более двух:
а) на пыхе с использование preg_match_all
б) парсим различные результаты, варианты входных данных:
1) 6D 6H
2) 9H 5M
3) 1D 10M
4) 10M 14S

Сами параметры могут быть любыми, от 0 до 59.

Необходимо несмотря из входных данных заполнить массив:

[0] => Array
(
[0] => 6
[1] => ''
[2] => 1
[3] => ''
[1] => Array
[0] => 6
[1] => 9
[2] => ''
[3] => ''

[2] => Array
[0] => ''
[1] => 5
[2] => 10
[3] => 10

[3] => Array
[0] => ''
[1] => ''
[2] => ''
[3] => 14

1й подмассив - D (дни), 2й подмассив - H (часы), 3й подмассив - M (минуты), 4й подмассив - S (секунды)


Есть идеи?
 
Ответить с цитированием

  #982  
Старый 06.02.2010, 00:17
mr.The
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме:
4778940

Репутация: 1257


Отправить сообщение для mr.The с помощью ICQ
По умолчанию

Цитата:
Сообщение от m0Hze  
PHP код:
$text "
<select id='w2'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>"
;
preg_match("#id='w2'>(.*)<\/select>#s"$text$match);
echo 
strip_tags($match[1]); 
спасибо кэп! Я имел в виду, что мне нужно получить как value так и само значение между >1<.
 
Ответить с цитированием

  #983  
Старый 06.02.2010, 11:43
Compton
Участник форума
Регистрация: 31.01.2010
Сообщений: 170
Провел на форуме:
1442841

Репутация: 63
Отправить сообщение для Compton с помощью AIM Отправить сообщение для Compton с помощью Yahoo
По умолчанию

<?
$text="<select id='w2'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>";
preg_match("/<select id='w2'>\r\n<option value='([0-9])'>(.*)<\/option>/s", $text, $m);
preg_match("/<select id='w2'>\r\n(<option value='([0-9])'>(.*)<\/option>)/s", $text, $s);
echo "сначала $s[1]<br> вконце $m[2]";
?>
пробуй)
З.Ы. Да,я извращенец

Последний раз редактировалось Compton; 06.02.2010 в 17:26..
 
Ответить с цитированием

  #984  
Старый 07.02.2010, 14:44
draliokero
Познающий
Регистрация: 14.03.2009
Сообщений: 86
Провел на форуме:
385811

Репутация: 12
По умолчанию

Получаю от сервера ответ в виде неполного XML (без заголовка <?xml ... ?>.
Нужно распарсить таким образом: содержимое <input_img> в <img src="..." >, а <description> в <b>...</b> и вывести по порядку, как в XML'е.
Как лучше сделать? Дописать заголовок в начало ( $request = '<?xml version="1.0" encoding="UTF-8"?>'.curl_exec($ch); ) и использовать xml_parser или нечего не записывать и регулярками пройтись? Помогите распарсить.

Код:
<?xml version="1.0" encoding="UTF-8"?>
     <math>
	<variant>
	  <input_img>dss.localhost.ru/masima/Render.app.php/execute?id=2651267</input_img>
	<solve>
	  <description>5</description>
	  <answer_img>dss.localhost.ru/masima/Render.app.php/execute?id=1694028</answer_img>
	</solve>
	<solve>
	  <description>5</description><answer_img>dss.localhost.ru/masima/Render.app.php/execute?id=1694028</answer_img></solve>
	</variant>
     </math>

Последний раз редактировалось draliokero; 07.02.2010 в 15:27..
 
Ответить с цитированием

  #985  
Старый 07.02.2010, 15:33
Compton
Участник форума
Регистрация: 31.01.2010
Сообщений: 170
Провел на форуме:
1442841

Репутация: 63
Отправить сообщение для Compton с помощью AIM Отправить сообщение для Compton с помощью Yahoo
По умолчанию

может просто через preg_replace теги заменить?
или я что не так понял?
 
Ответить с цитированием

  #986  
Старый 07.02.2010, 15:35
GlooK
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме:
2310282

Репутация: 149
По умолчанию

Цитата:
Сообщение от Compton  
может просто через preg_replace теги заменить?
или я что не так понял?
Я тоже не совсем догоняю, но попробую предложить:
PHP код:
<?php
$result 
'<?xml version="1.0" encoding="UTF-8"?>
     <math>
    <variant>
      <input_img>dss.localhost.ru/masima/Render.app.php/execute?id=2651267</input_img>
    <solve>
      <description>5</description>
      <answer_img>dss.localhost.ru/masima/Render.app.php/execute?id=1694028</answer_img>
    </solve>
    <solve>
      <description>5</description><answer_img>dss.localhost.ru/masima/Render.app.php/execute?id=1694028</answer_img></solve>
    </variant>
     </math>'
;

$result preg_replace('#<input_img>(.*?)<\/input_img>#''<img src="\\1" >'$result);
$result preg_replace('#<description>(.*?)<\/description>#''<b>\\1</b>'$result);
echo 
$result;
?>
 
Ответить с цитированием

  #987  
Старый 07.02.2010, 16:42
draliokero
Познающий
Регистрация: 14.03.2009
Сообщений: 86
Провел на форуме:
385811

Репутация: 12
По умолчанию

А можно сделать так, чтобы один массив заполнялся согласно одному рег. выражению:
<description>(.*?)<\/description>|<input_img>(.*?)<\/input_img> ?
preg_match_all вроде, но там многомерный массив получается и повторяются результаты
 
Ответить с цитированием

  #988  
Старый 07.02.2010, 19:16
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Убери с регулярки скобки, оставив просто .* тоесть:
PHP код:
preg_match_all('#<description>.*<\/description>|<input_img>.*<\/input_img>#'$where$matches); 
 
Ответить с цитированием

  #989  
Старый 10.02.2010, 22:47
Compton
Участник форума
Регистрация: 31.01.2010
Сообщений: 170
Провел на форуме:
1442841

Репутация: 63
Отправить сообщение для Compton с помощью AIM Отправить сообщение для Compton с помощью Yahoo
По умолчанию

Strilo4ka
если его не экранизировать,то это значит,что шаблон закончен
 
Ответить с цитированием

  #990  
Старый 10.02.2010, 23:13
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

Цитата:
Сообщение от Compton  
Strilo4ka
если его не экранизировать,то это значит,что шаблон закончен
Посмотри внимательнее... Шаблон открывается символом "#", тобишь экранировать слеш в этом случае нету потребности. Если бы шаблон начинался "/", то тогда да - экранировать надо.

Последний раз редактировалось mailbrush; 10.02.2010 в 23:15..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi]/[Pascal] Задай вопрос, получи ответ Isis С/С++, C#, Delphi, .NET, Asm 6762 17.06.2010 21:23
[ *NIX ] Задай вопрос - получи ответ. Xszz *nix 1547 15.06.2010 15:41
[Lan] Задай вопрос - получи ответ! sedoy_xxx АнтиАдмин 133 31.03.2010 08:35
Всё о беспороводном соединении на кпк и смартфонах! Задай вопрос - получи ответ! ARMENIN Беспроводные технологии/WPAN/WLAN 2 02.11.2008 00:40
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ