RegEx用于MySQL数据库中的字符串替换

时间:2015-09-24 05:55:07

标签: php mysql regex

我最近升级了论坛的IPB版本,但报价没有升级,IPS也没有提供我需要的支持。

我需要构建一个正则表达式来查找和替换

例如,这是旧的论坛格式:

<div class="quotetop">QUOTE(Cleber__v @ Apr 14 2015, 12:25 PM) <a href="index.php?act=findpost&amp;pid=2778161">&lt;{POST_SNAPBACK}&gt; </a></div><div class="quotemain"><!--quotec--> TEXT TO BE KEPT <!--QuoteEnd--> </div><!--QuoteEEnd-->

这是它应该采用的新格式:

`<div>
<blockquote class="ipsQuote" 
data-cite="Em 14/04/2015, (Cleber__v disse:" data-ipsquote="" 
data-ipsquote-timestamp="1428004301" data-ipsquote-userid="2350" 
data-ipsquote-username="Cleber__v" data-ipsquote-contapp="forums" 
data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" 
data-ipsquote-contentid="105179" data-ipsquote-contentcommentid="2768819">
TEXT TO BE INSERTED</blockquote></div><p><span>​</span></p>`

所以我需要找到内容,保存用户名,邮政ID(或纪念),时间和文字,并用正确的格式替换。

我一直在研究正则表达式大约一个星期而没有成功如何实现这一目标

有人可以帮忙吗?谢谢

1 个答案:

答案 0 :(得分:1)

你应该为自己尝试并给我们你试过的正则表达式,但这是你迈出的第一步:

.*?>QUOTE\((?P<name>.*)\ \@\ (?P<date>[^\)]+).*?pid\=(?P<pid>[0-9]*).*?\<\!\-\-quotec\-\-\>(?P<text>.*?)\<\!\-\-QuoteEnd\-\-\>

请在此处查看其工作原理:https://regex101.com/r/dM0eG3/1以及匹配信息如何符合您的需求。

  

注意:在应用此正则表达式之前,您必须删除所有新行字符,但这在PHP或您可能用于创建数据库升级脚本的任何语言中都相当容易。

这将从您的文字中提取所有相关信息以新格式替换这些内容留给读者练习。