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

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

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

 

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

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

тема: Извлечь телефоны и имя пользователя из строки

Сообщения:  [1-10]    [11-20]  [21-21] 

 
 автор: starpom   (27.12.2010 в 21:23)   письмо автору
 
   для: cheops   (27.12.2010 в 11:32)
 

Спасибо, буду разбираться!

  Ответить  
 
 автор: cheops   (27.12.2010 в 11:32)   письмо автору
 
   для: starpom   (26.12.2010 в 19:40)
 

>Можете и так, видать гиблая это затея, ну а хотя бы телефоны выбрать и поудалять тире и
>пробелы (если они есть )между цифрами реально?
Можно начать отталкиваться от следующего скрипта
<?php
  $str 
"541-87-42; 067-205-47-01 Василий
541-87-42; 067-205-47-01 Василий
541-87-42; 067-205-47-01 Василий
541-87-42; 067-205-47-01 Василий"
;
  
// Получаем отдельные строки
  
$lines explode("\r\n"$str);
  
// В цикле обрабатываем каждую отдельную строку
  
for($i 0$i count($lines); $i++)
  {
    
// Получаем отдельные подстроки
    
$items preg_split("|[\s]+|"$lines[$i]);
    
// Выделяем телефоны
    
$phones = array();
    for(
$j 0$j count($items); $j++)
    {
      
$items[$j] = trim($items[$j], ",; ");
      
// Проверяем телефон ли это
      
if(preg_match("|[-\d]+|"$items[$j]))
      {
        
// Удаляем тире
        
$items[$j] = str_replace("-"""$items[$j]);
        
// Помещаем телефон-результат в массив
        
$phones[] = $items[$j];
      }
    }
    
// Выделяем имя
    
$name "";
    if(
preg_match("|[^\d]+$|i"$lines[$i], $out)) $name $out[0];
    
// Результат
    
echo "Имя = $name<br>";
    echo 
"Телефоны";
    echo 
"<pre>";
    
print_r($phones);
    echo 
"</pre>";
  }
?>

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

  Ответить  
 
 автор: Trianon   (26.12.2010 в 20:44)   письмо автору
 
   для: starpom   (26.12.2010 в 20:35)
 

так бы сразу и сказали.

  Ответить  
 
 автор: starpom   (26.12.2010 в 20:35)   письмо автору
 
   для: sim5   (26.12.2010 в 20:20)
 

Парсер контента пишеться.

  Ответить  
 
 автор: neadekvat   (26.12.2010 в 20:32)   письмо автору
 
   для: starpom   (26.12.2010 в 20:05)
 

Кто так поставил задачу?

  Ответить  
 
 автор: sim5   (26.12.2010 в 20:20)   письмо автору
 
   для: starpom   (26.12.2010 в 20:17)
 

Это почему?

  Ответить  
 
 автор: starpom   (26.12.2010 в 20:17)   письмо автору
 
   для: sim5   (26.12.2010 в 20:07)
 

не получиться

  Ответить  
 
 автор: sim5   (26.12.2010 в 20:07)   письмо автору
 
   для: starpom   (26.12.2010 в 19:29)
 

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

  Ответить  
 
 автор: starpom   (26.12.2010 в 20:05)   письмо автору
 
   для: neadekvat   (26.12.2010 в 19:53)
 

Может и проще, но задача стоит именно средствами php решить вопрос

  Ответить  
 
 автор: neadekvat   (26.12.2010 в 19:53)   письмо автору
 
   для: starpom   (26.12.2010 в 19:40)
 

Может, проще будет просить пользователей вводить каждый телефон и свое имя отдельно?

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-21] 

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

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