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

как отпарсить?
  #1  
Старый 27.03.2008, 20:58
Аватар для x88x
x88x
Участник форума
Регистрация: 27.11.2007
Сообщений: 233
Провел на форуме:
1379382

Репутация: 378
Отправить сообщение для x88x с помощью ICQ
По умолчанию как отпарсить?

блин, совсем меня штырит =)

вобщем, простенькая задачка: есть файл вида:
Код HTML:
<p>вопрос1</p>
<p>ответ1</p>
<p>ответ2</p>
<p>ответ3</p>
<p>ответ4</p>
<p>ответ5</p>
<img>
<hr>
<p>вопрос2<p>
<p>ответ1<p>
<p>ответ2<p>
<p>ответ3<p>
<hr>
нужно с помощью пхп привести его в вид:
вопрос1|ответ1|ответ2|ответ3. .......
вопрос2|ответ1|ответ2|ответ3. .......

и т.д.
в долгу не останусь
 
Ответить с цитированием

  #2  
Старый 27.03.2008, 21:14
Аватар для De-visible
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме:
4037638

Репутация: 1821


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

Цитата:
нужно с помощью пхп привести его в вид:
Можно на Delphi реализовать
 
Ответить с цитированием

  #3  
Старый 27.03.2008, 21:16
Аватар для x88x
x88x
Участник форума
Регистрация: 27.11.2007
Сообщений: 233
Провел на форуме:
1379382

Репутация: 378
Отправить сообщение для x88x с помощью ICQ
По умолчанию

Цитата:
Сообщение от De-visible  
Можно на Delphi реализовать
блин. в принципе, не принципиально, но хотелось бы на пхп
 
Ответить с цитированием

  #4  
Старый 27.03.2008, 21:25
Аватар для Piflit
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


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

если в вопросе всегда есть знак вопроса '?', то можно взять все ~<p>([^<]*\?)</p>~ будут вопросы, а ~<p>([^<?]*)</p>~ - ответы
 
Ответить с цитированием

  #5  
Старый 27.03.2008, 21:28
Аватар для .:EnoT:.
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

Если текст именно такой, то можно в принципе просто заменой распарсить...но лучше конечно по регулярке...
PHP код:
<?php
$a 
'<p>вопрос1</p> <p>ответ1</p> <p>ответ2</p> <p>ответ3</p> <p>ответ4</p> <p>ответ5</p> 
<img> <hr> <p>вопрос2</p> <p>ответ1</p> <p>ответ2</p> <p>ответ3</p> <hr>'
;

$a str_replace('<p>'' '$a);
$a str_replace('</p>''|'$a);
$a str_replace('<hr>'"\n"$a);
$a strip_tags($a);
echo 
$a;
?>
Ещё раз повторю что имхо лучше регуляркой, а то щас умники будут возникать...
 
Ответить с цитированием

  #6  
Старый 27.03.2008, 21:30
Аватар для d_x
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Толком не понял, как должен выглядеть результат, нужно по тегу <hr> раздулять ещё на строки? А тег <img> к чему? И почему во второй части заданного тс примера теги <p> не закрывающиеся в конце строк?

Сделал как понял и первое, что пришло в голову

PHP код:
$txt="<p>вопрос1</p>\n<p>ответ1</p>\n<p>ответ2</p>\n<p>ответ3</p>\n<p>ответ4</p>\n<p>ответ5</p>\n<img>\n<hr>\n<p>вопрос2</p>\n<p>ответ1</p>\n<p>ответ2</p>\n<p>ответ3</p>\n<hr>";


$txt=str_replace('</p>','',$txt);
$txt=str_replace('<img>','',$txt); //не понял, зачем <img>, удаляем
$txt=str_replace("\n",'',$txt);

$txt=explode('<hr>',$txt);

$ans='';

foreach(
$txt as $txt2)
{
  
$txt2=explode('<p>',$txt2);

  foreach(
$txt2 as $txt3)
  {
    if(
$txt3$ans.=$txt3.'|';
  }

  
$ans.="\n";
}

print_r($ans); 
Хотя если б было точнее условие, написал бы регулярку наверно)

Последний раз редактировалось d_x; 27.03.2008 в 21:33..
 
Ответить с цитированием

  #7  
Старый 27.03.2008, 21:32
Аватар для VDShark
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

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

что б особо не извращаться с составлением выражения можн распарсить в два подхода... код ниже
PHP код:
<?php
    $str 
file_get_contents('1.txt');
    
$pattern "!(.+)<hr>!Uis";
    
preg_match_all($pattern$str$res);
    
$pattern "!<p>(.+)</p>!Uis";
    foreach(
$res[1] as $row){
        
preg_match_all($pattern$row$tmp);
    }
в результате на каждой итерации в массиве $tmp будет 0-й элемент - это вопрос, остальные - ответы.
 
Ответить с цитированием

  #8  
Старый 27.03.2008, 21:58
Аватар для x88x
x88x
Участник форума
Регистрация: 27.11.2007
Сообщений: 233
Провел на форуме:
1379382

Репутация: 378
Отправить сообщение для x88x с помощью ICQ
По умолчанию

всем огромное спасибо!!! выручили как всегда =)
проставлюсь завтра (Вы добавили слишком много репутации...)

=)
 
Ответить с цитированием

  #9  
Старый 27.03.2008, 22:01
Аватар для desTiny
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

Цитата:
Сообщение от x88x  
блин, совсем меня штырит =)

вобщем, простенькая задачка: есть файл вида:
Код HTML:
<p>вопрос1</p>
<p>ответ1</p>
<p>ответ2</p>
<p>ответ3</p>
<p>ответ4</p>
<p>ответ5</p>
<img>
<hr>
<p>вопрос2<p>
<p>ответ1<p>
<p>ответ2<p>
<p>ответ3<p>
<hr>
нужно с помощью пхп привести его в вид:
вопрос1|ответ1|ответ2|ответ3. .......
вопрос2|ответ1|ответ2|ответ3. .......

и т.д.
в долгу не останусь
PHP код:
<?php
$ff 
file_get_contents('a.htm');
$a explode("<hr>",$ff);
$a preg_replace('/\r\n/'''$a);
$a preg_replace('/<p>([^<]*)<\\/p>/''$1|'$a);
$a preg_replace('/<[\/\!]*?[^<>]*?>/'''$a);
for (
$i 0$i count($a); $i++){
    echo 
substr($a[$i], 0, -1)."<BR>\r\n";
}
?>
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #10  
Старый 27.03.2008, 22:01
Аватар для desTiny
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

блин..не успел
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как допрашивали администраторов The Pirate Bay iddqd Болталка 11 20.02.2008 10:30
FAQ. Перед тем как задать вопрос. Fata1ex ICQ 1 04.11.2007 20:35
Как стать Хакером? (или как всё начиналось у вас?) RaZ_69 Болталка 46 22.02.2006 08:33
Как использовать cross-site scripting (css) foreva Чужие Статьи 0 06.02.2005 19:03



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


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




ANTICHAT.XYZ