sql-使用sql从post\u内容中删除起始html元素

vfh0ocws  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(560)

我正在创建一个wordpress站点,并且已经从以前的站点导入了产品,但是大多数产品的开头都有一系列的div和table标签(最后还有结束标签)。例如:

<div align="center">
    <div id="innerwrapper">
    <div id="canvas" style="width: auto; padding: 1%; margin-left: autopx; margin-right: autopx; auto 0px; background: #E3F9FF; border-radius: 5px 25px 5px; box-shadow: #888888 0px 0px 1.25em;" align="center">
    &nbsp;
        <table style="width: 90%; margin-left: 3px; margin-right: 3px; align: center;">
            <tbody>
                <tr>
                    <td>
                    <div align="center">
                    <div id="innerwrapper">
                    <div id="canvas" style="width: auto; padding: 3%; background: #ffffff; border-radius: 25px; box-shadow: #888888 0px 0px 0em; text-align: center;" align="top">

{Product Information}

</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>

由于我只是在{productinformation}部分之后(通常,但并不总是以h2标记开始,并且没有标准结束),因此我猜我可以使用:

UPDATE `wp_posts`
SET `post_content = RIGHT(`post_content`,LENGTH(`post_content`)-INSTR(`post_content`,'<div id="canvas" style="width: auto; padding: 3%; background: #ffffff; border-radius: 25px; box-shadow: #888888 0px 0px 0em; text-align: center;" align="top">')-158)
WHERE `post_content` LIKE '%<div id="canvas" style="width: auto; padding: 3%; background: #ffffff; border-radius: 25px; box-shadow: #888888 0px 0px 0em; text-align: center;" align="top">%'

因为这将找到最后一个打开的div标签,并从右侧获取内容。然而,我无法找出结束标签,因为有通过产品信息和有一个偶然的文本后,最后一个和一个
/  每隔一段时间。
我想我的问题是,即使我需要使用通配符来获取大多数结束标记,我也能获取结束标记的索引/指令吗?

6za6bjd0

6za6bjd01#

检查此代码是否适用于您的mysql版本:

UPDATE wp_posts
SET post_content = TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(post_content, 'align="top">', -1), '</div>', 1))
WHERE `post_content` LIKE '%align="top">%'

我已将标记图案缩短为 'align="top">' -但如果需要,你可以把它放回去。我用过 '</div>' 作为终结标记-如有需要可更改。

相关问题