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

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

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

 

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

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

тема: Разбить переписку по переменным
 
 автор: Yuraboss   (06.07.2012 в 00:33)   письмо автору
 
 

Припустим есть переписка (с вконтакте.ру):
Имя
сообщение
дата
Имя
Сообщение
дата

и т.д. Подскажите как организовать с помощью регулярных выражений следующее:разбить эту переписку по переменным:
Массив А(1)=>имя1
Массив А(2)=>сообщение1
Массив А(3)=> дата1

Массив B(1)=>имя2
Массив B(2)=>сообщение2
Массив B(3)=> дата2

хотя бы скажите что нужно почитать, буду благодарен

  Ответить  
 
 автор: cheops   (06.07.2012 в 06:54)   письмо автору
 
   для: Yuraboss   (06.07.2012 в 00:33)
 

В первую очередь нужно получить HTML-код страницы, а потом уже разбирать его при помощи регулярных выражений. Вы хотите автоматически это делать? Тогда придется пройти скриптом авторизацию ВК (возможно у них есть API).

  Ответить  
 
 автор: Yuraboss   (06.07.2012 в 13:40)   письмо автору
 
   для: cheops   (06.07.2012 в 06:54)
 

да нет, переписку я копирну и вставлю уже в свой php-файл, то есть через форму ввода присвою переписку переменной, а потом уже буду с этой переменной работать

  Ответить  
 
 автор: cheops   (06.07.2012 в 15:23)   письмо автору
 
   для: Yuraboss   (06.07.2012 в 13:40)
 

А не можете такой файл-переписку прикрепить к сообщению, чтобы можно было поэкспериментировать на конкретном примере.

  Ответить  
 
 автор: Yuraboss   (06.07.2012 в 17:23)   письмо автору
448 байт
 
   для: cheops   (06.07.2012 в 15:23)
 

прикрепляю кусок переписки ,только надеюсь о результатах экспериментов напишете тут?)

  Ответить  
 
 автор: ladan   (07.07.2012 в 20:58)   письмо автору
 
   для: Yuraboss   (06.07.2012 в 17:23)
 

Можно начать через preg_match_all и закончить циклом for, чтоб привести к виду:

Массив А(1)=>имя1 
 Массив А(2)=>сообщение1 
 Массив А(3)=> дата1

 Массив B(1)=>имя2
 Массив B(2)=>сообщение2
 Массив B(3)=> дата2



$text = "Юлия
Приходить или не грузить?    20.05.12    
        Юра
приходить и не грузить)    20.05.12    
        Юлия
Если так, то позже    20.05.12    
        Юра
будешь сама разбираться?    20.05.12    
        Юлия
Попытаюсь    20.05.12    
        Юра
ну если хочешь приходи)    20.05.12    
        Юлия
Точно?    20.05.12    
        Юра
да)    20.05.12    
        Юлия
Ладно, но если только пообещаешь мне во всем разобраться))    20.05.12    
        Юра
попытаюсь)_))    20.05.12    
        Юлия
Тогда жди, скоро буду)    20.05.12    
        Юра
жду)";

$num = preg_match_all("#(.+?)\r\n(.+?)([0-9]{2}\.[0-9]{2}\.[0-9]{2})#i",$text,$str);

for($i=0;$i<$num;$i = $i + 2) 
    {
        $massiv_A[] = $str[1][$i]; $massiv_A[] = $str[2][$i]; $massiv_A[] = $str[3][$i]; // Юлия
        $massiv_B[] = $str[1][$i+1]; $massiv_B[] = $str[2][$i+1]; $massiv_B[] = $str[3][$i+1]; //Юра
    }

print_r($massiv_A);
print_r($massiv_B);


Последнее сообщение Юры не запишется в массив. Если бы стояла дата, то записалось бы. Все равно, решаемо через еще одно рег. выражение.


=========================================================================

Но если кроме имени будет стоять еще и фамилия, то никак не получится, т.к регулярка не сможет отличить такое "имя" от самого текста сообщения и еще, потому что такое "имя" стоит вплотную к тексту.

  Ответить  
 
 автор: Yuraboss   (07.07.2012 в 23:52)   письмо автору
 
   для: ladan   (07.07.2012 в 20:58)
 

спасибо, что откликнулись, я вот за это время так сделал:

<?
function strips(&$el) { 
  if (
is_array($el)) 
    foreach(
$el as $k=>$v
      
strips($el[$k]); 
  else 
$el stripslashes($el); 

if (
get_magic_quotes_gpc()) { 
  
strips($_GET);
  
strips($_POST);
  
strips($_COOKIE); 
  
strips($_REQUEST);
  if (isset(
$_SERVER['PHP_AUTH_USER'])) strips($_SERVER['PHP_AUTH_USER']); 
  if (isset(
$_SERVER['PHP_AUTH_PW']))   strips($_SERVER['PHP_AUTH_PW']);
}
if (isset(
$_POST['st']))  {$string=$_POST['st'];}

preg_match_all("/([Юлия]{4}|[Юра]{3})([.\s\S]*?)([\d][\d][.][\d][\d][.][\d][\d])/"$string,$out);

 
  unset(
$out[0]); 
  foreach (
$out as $key =>$value
  {foreach (
$out[$key] as $key =>$value)
  
$max=$key ;}

  
  
 for (
$i=0$i<=$max;$i++)
 {
$name=$out[1][$i];
  
$mes$out[2][$i];
  
$date=$out[3][$i];
  echo(
"$name - $mes - $date<br>");}
  
?>

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

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