Парсинг спойлеров, цитат с TorrentPier

dredd

Пользователь
#1
Имеется граббер(тот, что валяется тут), решил реанимировать его. В регулярках не силён, сел за адаптацию просто из интереса, теперь возник вопрос: как спарсить спойлеры, цитаты, и прочие спановые и дивовые элементы? Раньше с этим было проще:
HTML:
<span class="sp-body" title="заголовок спойлера">текст спойлера</span>
Сейчас ситуация сложнее:
HTML:
<div class="sp-wrap"><div class="sp-head folded clickable">заголовок спойлера</div><div class="sp-body" title="">текст спойлера</div></div>
Прошу помощи, заранее очень благодарен!:) Искал информацию по этому поводу, но до меня так и не дошло как правильно это реализовать.
 

XDA

Заблокирован
#2
Имеется граббер(тот, что валяется тут), решил реанимировать его. В регулярках не силён, сел за адаптацию просто из интереса, теперь возник вопрос: как спарсить спойлеры, цитаты, и прочие спановые и дивовые элементы? Раньше с этим было проще:
HTML:
<span class="sp-body" title="заголовок спойлера">текст спойлера</span>
Сейчас ситуация сложнее:
HTML:
<div class="sp-wrap"><div class="sp-head folded clickable">заголовок спойлера</div><div class="sp-body" title="">текст спойлера</div></div>
Прошу помощи, заранее очень благодарен!:) Искал информацию по этому поводу, но до меня так и не дошло как правильно это реализовать.
Все регулярки замени на современные, под спойлером
Код:
    $pos = strpos($text, '<div class="post_body"');
    $text = substr($text, $pos);
    $pos = strpos($text, '<div class="clear"></div>');
    $text = substr($text, 0, $pos);
    $text = preg_replace('/<div class="post_body" id=".*?">/', '', $text);

    $text = preg_replace('#<img class="smile" src=".*?" align="absmiddle" border="0" />#', '', $text);
    $text = preg_replace('#\n<h3 class="sp-title">.*?</h3>#', '', $text);
    $text = preg_replace('#<a name=".*?"></a>#', '', $text);
    $text = preg_replace('#<a class="postLink-name" href=".*?">([\s\S]*?)</a>#', '$1', $text);
    $text = str_replace('<span class="post-hr">-</span>', "\n[hr]\n", $text);
    $text = preg_replace('#<pre class="post-pre">([\s\S]*?)</pre>#', '$1', $text);
    $text = preg_replace('#<div style="margin-.*?">([\s\S]*?)</div>#', '$1', $text);
    $text = preg_replace('/<var class="postImg" title="(.*?)">&#10;<\/var>/', '[img]$1[/img]', $text);
    $text = preg_replace('/<var class="postImg postImgAligned img-(.*?)" title="(.*?)">&#10;<\/var>/', "[img=\\1]\\2[/img]\n", $text);
    $text = str_replace('<span class="post-br"><br /></span>', "\n\n", $text);

    $text = str_replace('<ol class="post-ul">', '[list]', $text);
    $text = str_replace('</ol>', '[/list]', $text);

    $text = preg_replace('/<br.*?>/', '', $text);
    $text = preg_replace('/<ul type="(.*?)">/', '[list=$1]', $text);
    $text = str_replace('<ul>', '[list]', $text);
    $text = str_replace('</ul>', '[/list]', $text);
    $text = str_replace('<li>', "\n[*]", $text);
    $text = str_replace('</li>', '', $text);

    $text = str_replace("</div>\n</div>", '</div></div>', $text);
    $text = str_replace("</div>\n<div", '</div><div', $text);
    $text = str_replace("\">\n<div", '"><div', $text);

    $text = str_replace('<pre>', '[pre]', $text);
    $text = str_replace('</pre>', '[/pre]', $text);

    for ($i=0; $i<=20; $i++)
    {
        $text = preg_replace('/<span class="post-b">([^<]*?)<(?=\/)\/span>/', '[b]$1[/b]', $text);
        $text = preg_replace('/<span class="post-u">([^<]*?)<(?=\/)\/span>/', '[u]$1[/u]', $text);
        $text = preg_replace('/<span class="post-i">([^<]*?)<(?=\/)\/span>/', '[i]$1[/i]', $text);
        $text = preg_replace('/<span class="post-s">([^<]*?)<(?=\/)\/span>/', '[s]$1[/s]', $text);
        $text = preg_replace('/<span style="font-size: ([^<]*?)px; line-height: normal;">([^<]*?)<(?=\/)\/span>/', "[size=\\1]\\2[/size]", $text);
        $text = preg_replace('/<span style="font-family: ([^<]*?);">([^<]*?)<(?=\/)\/span>/', "[font=\"\\1\"]\\2[/font]", $text);
        $text = preg_replace('/<span class="post-align" style="text-align: ([^<]*?);">([^<]*?)<(?=\/)\/span>/', "[align=\\1]\n\\2\n[/align]", $text);
        $text = preg_replace('/<span class="p-color" style="color: ([^<]*?);">([^<]*?)<(?=\/)\/span>/', '[color=$1]$2[/color]', $text);
        $text = preg_replace('/<a href="([^<]*?)" class="postLink">([^<]*?)<(?=\/)\/a>/', '[url=$1]$2[/url]', $text);
        $text = preg_replace('/<div class="q-wrap"><div class="q-head"><span><b>(.*?)<\/b><\/span><\/div><div class="q">([^<]*?)<(?=\/)\/div><\/div>/', "[quote=\"\\1\"]\n\\2\n[/quote]", $text);
        $text = preg_replace('/<div class="c-wrap"><div class="c-head"><b>.*?<\/b><\/div><div class="c-body">([^<]*?)<(?=\/)\/div><\/div>/', "[code]\n\\1\n
", $text);
$text = preg_replace('/<div style="text-align:([^<]*?)">([^<]*?)<(?=\/)\/div>/', '[align=$1]$2[/align]', $text);

$text = preg_replace('/<div class="sp-wrap"><div class="sp-head folded"><span>(.*?)<\/span><\/div><div class="sp-body">([^<]*?)<(?=\/)\/div><\/div>/', "
\n\\2\n
", $text);
[/CODE]


  • Работает на ура
Буду благодарен за ваш лайк))
Только напиши автора регулярки) в виде копирайта)
 
Последнее редактирование:

dredd

Пользователь
#3
@XDA спасибо, буду разбираться:) и кто автор?)
 
Последнее редактирование:

XDA

Заблокирован
#4
@XDA спасибо, буду разбираться:) и кто автор?)
АНапиши автор _Xz_ адаптировал DarkSOFT)):)D)
Ну все не пиши кто автор, я позволю).
Это специально рутрек заменил, чтобы копипастры не ходил с древними парсами:))
 
Последнее редактирование:

dredd

Пользователь
#5
@XDA удивительно, но ни одна регулярка не сработала)) но тем не менее направление куда копать есть, спасибо)
 

Virtuoz

Пользователь
#8
АНапиши автор _Xz_ адаптировал DarkSOFT)):)D)
Ну все не пиши кто автор, я позволю).
Это специально рутрек заменил, чтобы копипастры не ходил с древними парсами:))
Ты такой пиздобол по другому не могу написать просто...адаптатор блин... взял уже готовое и что адаптировал????
 
Сверху