2017-09-03 79 views
0

我刚刚学会了如何删除标题中的特定关键字的帖子来执行MySQL。现在我正在努力学习如何执行一个类似的脚本,将搜索文章的内容,并删除下面的HTML代码:从内容帖子中删除选定的文本,而不删除帖子本身(WordPress的)

<input id="website_url" class="c7" type="text" value="this text changes" /> 

价值本身的变化,但只要脚本删除一切都包容到/>它将工作。

这就是我关于帖子的标题

DELETE FROM wp_posts WHERE post_title REGEXP '\\1970-01-01 01:00:00' 

之前使用我知道上面有没有相关性,但我一点与问候输入什么,我想删除就是我的奋斗来从

+0

那是确切的HTML代码在所有情况下删除或者是一些可变的部分。例如。它可以是'class =“d6”'?请提供几种不同的样品输入,并在每种情况下显示所需的结果。尝试实现[mcve]。对于这几行“创建表...”和“插入...”将会很有帮助,它们代表了合适的测试数据库内容。 – Yunnosch

+0

MySQL没有简单的方法。 MariaDB具有'REGEXP_REPLACE()'。 –

+0

唯一的变量是值。其他一切都会保持不变,包括班级。 – JS7319

回答

0

我建议:

select * from toy; 
with key(string1) as (select '<input id="website_url" class="c7" type="text" value="') 
update toy set html = 
( select 
     substr(html,0,instr(html, (select string1 from key))) 
     || 
     substr(substr(html,4+instr(html, (select string1 from key))), 
       instr(substr(html,instr(html, (select string1 from key))), '" />' ) 
      ) 
) 
where html like '%'||(select string1 from key)||'%'; 

基本上

  • 更新仅发生在搜索到的HTML的固定部分时,
    where html like '%'||(select string1 from key)||'%';
  • 通过连接前的字符串和之后的字符串更新,
    update ... set html = ...||...
  • 避免使用长重复的字符串的CTE,
    with key(string1) as (select '...') - >(select string1 from key)
  • 对字符串一些sqlite的魔法,instr(...)substr(...)
  • 稍微难看,硬编码什么应该是第二个字符串的长度,
    4+
+0

谢谢。 它将如何对变化的值作出反应?它是否会删除与您在那里输入的代码相关的所有值。 你给出的解释实际上太过先进,我理解不了。如果我要运行该代码,请介绍一下我可能需要在代码中编辑的内容吗? – JS7319

+0

你可以做一个[mcve],这样我们可以方便地谈论同样的事情吗?我比SQL更懂SQLite,我会问你使用命令行工具中的'.dump'命令。据我所知,在MySQL中,专用mysqldump命令行工具提供了相同的功能。最后,我想要的是一行'create table wp_posts ...'和足够的'i​​nstert到wp_posts值(...)'行。然后,您可以在成功处理所需查询后,根据需要模拟“select * from wp_posts”。 – Yunnosch

+0

我目前没有任何工作代码来实现这一目标。 我的问题与你提出的内容以及文章中发生变化的变量有关。我会给你一个问题的真实例子。这是几百个当前发布的帖子中存在的HTML,需要删除。URL本身就是变化 - 这是一个链接回到另一个网站。但URL的格式始终是一致的,我的方法是 - 扫描帖子以找到格式(静态),然后删除URL。 – JS7319