Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вытащить три числа - Помогите составить рег. выражение
 
 автор: pittop   (26.11.2011 в 00:28)   письмо автору
 
 

есть код HTML
обозначу "вчу" = всё что угодно - любые теги пробелы и пр.

вчу ЧИСЛО1 вчу Слово1 вчу ЧИСЛО2 вчу Слово2 вчу ЧИСЛО3 вчу Слово3 вчу
или м.б. так
вчу Слово1 вчу ЧИСЛО1 вчу Слово2 вчу ЧИСЛО2 вчу Слово3 вчу ЧИСЛО3 вчу

нужно вытащить числа
if(preg_match($pattern, $text, $out))
{
$d1 = $out[1];
$d2 = $out[2];
$d3 = $out[3];
echo "$t1 $t2 $t3 <br >";
}

можно за два прохода (буду определять по пустому $out[...])
! вчу может соприкасаться с числами и словами. напр. <тег>111111 </тег>


Спасибо.

  Ответить  
 
 автор: cheops   (26.11.2011 в 00:34)   письмо автору
 
   для: pittop   (26.11.2011 в 00:28)
 

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

  Ответить  
 
 автор: pittop   (26.11.2011 в 01:01)   письмо автору
 
   для: cheops   (26.11.2011 в 00:34)
 

это выдача с форумов типа
---
3000 Сообщений в 300 Тем от 500 Пользователей
---
Всего тем: <b>2000</b> &nbsp;&nbsp;&nbsp;&nbsp; Всего сообщений: <b>20000</b>
---
<dt>Тем</dt>
<dd>300</dd>
<dt>Сообщений</dt>
<dd>1,530</dd>
<dt>Пользователи</dt>

<dd>2,490</dd>
---
<div>
Тем: 17,030,
Сообщений: 151,231,
Пользователи: 5,468
</div>
---

такая вот мура
а там м.б. и <strong> и <b> и без них и "Сообщений:" - непредсказуемые вариации тегов
и теги могут примыкать...
напишите, если не трудно, универсальное что-то, я с вариациями покручу.

Или проще программно выпарсить, чем регуляркой?

  Ответить  
 
 автор: cheops   (26.11.2011 в 01:49)   письмо автору
 
   для: pittop   (26.11.2011 в 01:01)
 

Может проще просто между <dd> и </dd> число взять?
/<dd>([\d,]+)</dd>/
Только тут придется пользоваться preg_match_all(), а не preg_match().

  Ответить  
 
 автор: pittop   (26.11.2011 в 01:53)   письмо автору
 
   для: cheops   (26.11.2011 в 01:49)
 

к сожалению, я совсем не разбираюсь в рег.выр. (ибо потребность - раз в три года),
то что я написал - это
$pattern = "|.+Сообщений:\s+.+>(\d+).+\s+Тем:\s+.+>(\d+).+\s+Пользователей:\s+.+>(\d+).+\s+|";
:)
пожалуйста , напишите полностью $pattern с "/<dd>([\d,]+)</dd>/"

  Ответить  
 
 автор: cheops   (26.11.2011 в 12:40)   письмо автору
 
   для: pittop   (26.11.2011 в 01:53)
 

Я имел в виду следующий скрипт
<?php 
  $text 
"<dt>Тем</dt>
 <dd>300</dd>
 <dt>Сообщений</dt>
 <dd>1,530</dd>
 <dt>Пользователи</dt>

 <dd>2,490</dd>"
;
  
$pattern "|<dd>([\d,]+)</dd>|";
  
preg_match_all($pattern$text$out);
  echo 
"<pre>";
  
print_r($out[1]);
  echo 
"</pre>";
?>

  Ответить  
 
 автор: pittop   (26.11.2011 в 15:22)   письмо автору
 
   для: cheops   (26.11.2011 в 12:40)
 

Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования