2016-09-19 123 views
1

我有一个按日期排序的事件列表,每个事件都在<p>之内。有更多的200,它看起来像这样(我已经设法清理一点点):颠倒200段列表的顺序

<p><strong>1 july 2011</strong> event 1<br> 
Place where the event 1 takes place<br> 
more infos about event 1<br> 
event more infos about event 1</p> 
<p><strong>2 september 2011</strong> event 2<br> 
Place where the event 2 takes place<br> 
more infos about event 2<br> 
event more infos about event 2</p> 
<p><strong>3 september 2011</strong> event 3<br> 
Place where the event 3 takes place<br> 
more infos about event 3<br> 
event more infos about event 3</p> 

他们目前正在按日期(最早的事件第一)排序,我想要做的是什么颠倒顺序让最新的事件第一。

我唯一的标记是<p>,其中包含每个事件。日期并不总是相同的格式。

我已经尝试过使用excel,notepad ++和他的正则表达式的东西,但是也许有些事情需要处理PHP和/或JS?

你们能帮我解决这个问题吗?

谢谢!

+0

得到所有的段落,你需要到一个数组,然后运行磁盘阵列之前重新扭转它们的功能输出或向后走并穿过阵列输出。使用这些信息,您可以将一些代码放在一起,当出现问题时我们可以提供帮助。 – gabe3886

+0

你是如何绘制数据的?在该代码中,您可以非常简单地添加一个定义方法,但是您分享的代码无法帮助您。我们在这里失明。 –

+0

您的回答让我想起了爆炸方法,并带有preg_match_all函数。我会试一试。谢谢 ! – Cyc

回答

0

好吧,有时事情很简单,但你需要向其他人解释找到解决方案。所以它就是这样。

$string = "<p>blablabla</p><p>blablabla 2</p>"; 
$text = str_replace('</p>', '', $string); 
$array = explode('<p>', $text); 
$array = array_reverse($array); 

太简单了!

2

那么在JavaScript中,你可以在每个段落中读取,然后以相反的顺序遍历它们。这是你以后的事情吗?

$(function() { 

    var paras = $('#container p'); 
    var newhtml = ""; 
    for(var i=paras.length-1;i>=0;i--) 
    { 
     newhtml += $(paras[i]).html() + "</br>"; 
    } 
    $('#container').html(newhtml); 
}); 

Example Fiddle

+0

程序化解决方案 –

0

如果你想与REG-EXP做:

$a = '<p><strong>1 july 2011</strong> event 1<br> 
Place where the event 1 takes place<br> 
more infos about event 1<br> 
event more infos about event 1</p> 
<p><strong>2 september 2011</strong> event 2<br> 
Place where the event 2 takes place<br> 
more infos about event 2<br> 
event more infos about event 2</p> 
<p><strong>3 september 2011</strong> event 3<br> 
Place where the event 3 takes place<br> 
more infos about event 3<br> 
event more infos about event 3</p>'; 

$a = str_replace("\n","", $a); // maybe you dont need this line it happened to me couse of copy-paste from your question text 
preg_match_all("/\<p\>(.*)\<\/p\>/U", $a, $m); 

var_dump(array_reverse($m[1]));