批量转换<a> tags to <p> tags with RegEx

时间:2018-07-06 00:05:25

标签: mysql regex wordpress

I have a client who runs their site on WordPress and has misinterpreted the instructions here并将其所有锚点编码为 <variable name="DefaultLayout" value="${date}|${level:uppercase=true}|${logger}|${event-properties:item=callerName}|${event-properties:item=lineNumber}|${message}${onexception:|${onexception:${newline}${exception:format=tostring}}"/> <variable name="Main" value="${when:when=starts-with('${message}','~'):inner=${newline}${message}:else=${DefaultLayout}}"/> 而不是${when:when=starts-with('${message}','~')

从技术上讲,锚是有效的,但是它们是不正确的,并且在将内容转换为AMP时会被剥离。

我不知道如何具体定位这些错误的<a id="example-anchor"></a>标签并将其替换为<p id="example-anchor"></p>标签。似乎大约有70,000个实例。

除其他外,我还尝试过<a><p>,但它们似乎都包含需要保留的实际<a id=\\"([^)]+)\\"><\/a>标签。

感谢您的见解。

2 个答案:

答案 0 :(得分:0)

只要他们不在同一id标签中使用hrefa,就可以简单地将所需的a标签与<a\b([^>]+\bid=[^>]*>.*?<\/)a>匹配并将它们替换为<p$1p>

答案 1 :(得分:0)

除非您具有MySQL或MariaDB的新版本,否则没有实际的方法进行替换。

但是,编写简短的PHP脚本(或其他语言)以获取每一行,对其进行修复,然后将其存储回去是可行的。

如果只是将a更改为p,则搜索正则表达式可能是<a id=,只需将其替换为<p id=。实际上,可以使用replace()str_replace()之类的函数来完成此操作。