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

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

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: сложное регулярное выражение

Сообщения:  [1-8] 

 
 автор: JonNik   (18.11.2006 в 13:09)   письмо автору
 
   для: Trianon   (16.11.2006 в 23:46)
 

спасибо, все работает

   
 
 автор: Trianon   (16.11.2006 в 23:46)   письмо автору
 
   для: JonNik   (16.11.2006 в 22:45)
 


$list = array();
foreach($mas as $item)
  foreach(explode(',', $item) as $num) 
    $list[] = $num;

   
 
 автор: JonNik   (16.11.2006 в 22:45)   письмо автору
 
   для: JonNik   (16.11.2006 в 20:25)
 

вопрос снимается, возникает другой вопрос:
как из строк
$mas[] = '554033,89056932881';
$mas[] = ',252657,89109090900';
$mas[] = ',272834';
$mas[] = ',767693';
$mas[] = ',763294,553060,89038396533';
получить:
554033
89056932881
252657
89109090900
272834
767693
763294
553060
89038396533
т.е использую разделитель "," получать телефоны

   
 
 автор: JonNik   (16.11.2006 в 20:25)   письмо автору
 
   для: cheops   (16.11.2006 в 13:58)
 

Еще вопрос. Реально в последнем выражении, оставлять только цифры, т.е встречаюся строчки вида: т.45-30-26 Владимир Михайлович, хотелось бы получить 453026, или хотя бы 45-30-26

   
 
 автор: cheops   (16.11.2006 в 13:58)   письмо автору
 
   для: JonNik   (16.11.2006 в 13:08)
 

>Можно ли получить: тип 1, а не "тип 1.,".
Для этого следует исправить выражение следующим образом
<?php
$pattern 
"|<b>([^<]+)\.,</b>([^<]+)<i><b>([^<]+)</b></i>|";
?>

> что на сколько я понимаю сложнее номер телефона без состоящий только из цифр,
Проще поток каждый номер обработать при помощи конструкции, удаляющей дефисы
<?php
  $phone 
str_replace("-","",$phone);
?>

   
 
 автор: JonNik   (16.11.2006 в 13:08)   письмо автору
 
   для: cheops   (16.11.2006 в 12:27)
 

В принципе работает, но не идеально. Можно ли получить: тип 1, а не "тип 1.,". И что на сколько я понимаю сложнее номер телефона без состоящий только из цифр, т.е:
89056932881
или
580505

   
 
 автор: cheops   (16.11.2006 в 12:27)   письмо автору
 
   для: JonNik   (16.11.2006 в 12:06)
 

Можно поступить следующим образом
<?php
  $text 
'<table width="90%" border="0" cellspacing="0" cellpadding="5" align="center"> 
<tr> 
<td class="text21"> 
<hr noshade size=1> <b>тип 1.,</b> "текст" примерный еще что-то <i><b>,т.58-05-05</b></i> 
<hr noshade size=1> <b>тип 3.,</b> текст примерный <i><b>сот.т.8-910-900-91-19</b></i> 
<hr noshade size=1> <b>тип 2.,</b> "текст" примерный 12 что-то <i><b>т.38-05-05</b></i> 
<hr noshade size=1> <b>тип 3.,</b> "текст" примерный <i><b>сот.т.8-905-693-28-81</b></i> 
<hr noshade size=1> <b>тип 1.,</b> пример еще что-то <i><b>т.25-26-57</b></i> 
<hr noshade size="1">  
</td> 
</tr> 
</table>'
;

  
$pattern "|<b>([^<]+)</b>([^<]+)<i><b>([^<]+)</b></i>|";
  
preg_match_all($pattern$text$out);
  
// Массив $out[0] - <b>тип 1.,</b> "текст" примерный еще что-то <i><b>,т.58-05-05</b></i>
  // Массив $out[1] - тип 1.,
  // Массив $out[2] - "текст" примерный еще что-то
  // Массив $out[3] - ,т.58-05-05
  
unset($out[0]);
  echo 
"<pre>";
  
print_r($out);
  echo 
"<pre>";
?>

   
 
 автор: JonNik   (16.11.2006 в 12:06)   письмо автору
 
 

есть текст:

$text = '<table width="90%" border="0" cellspacing="0" cellpadding="5" align="center">
<tr>
<td class="text21">
<hr noshade size=1> <b>тип 1.,</b> "текст" примерный еще что-то <i><b>,т.58-05-05</b></i>
<hr noshade size=1> <b>тип 3.,</b> текст примерный <i><b>сот.т.8-910-900-91-19</b></i>
<hr noshade size=1> <b>тип 2.,</b> "текст" примерный 12 что-то <i><b>т.38-05-05</b></i>
<hr noshade size=1> <b>тип 3.,</b> "текст" примерный <i><b>сот.т.8-905-693-28-81</b></i>
<hr noshade size=1> <b>тип 1.,</b> пример еще что-то <i><b>т.25-26-57</b></i>
<hr noshade size="1"> 
</td>
</tr>
</table>';

в идеале хотелось бы получить сначала все записи:
<b>тип 1.,</b> "текст" примерный еще что-то <i><b>,т.58-05-05</b></i>
потом отдельно:
тип 1
"текст" примерный еще что-то
58-05-05

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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