我声明我不是正则表达式专家,但我正在尝试根据此处的一些示例创建代码。我需要在WordPress表中用字符串<li>
替换字符串<li class="ingredient">
。但是,此更改只能针对[ingredients title = XXXX]
和[/ingredient]
之间的文字进行。
我编写了这个PHP代码,但它可以删除替换[ingredients
和[/ ingredients]
。
因为正如我所说他们在这个领域不是很专家,任何人都可以帮我改变代码来做我需要的事情吗?
这是我的PHP脚本:
<?php
$connection = mysql_connect("mysql.xxxxxxxxx","xxxxx","xxxxxxxx");
$db = mysql_select_db ("xxxxxxx");
$sql = "SELECT ID,post_content FROM wp_7pchjn_posts";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result))
{
$id = $row['ID'];
$search= $row['post_content'];
if (strpos($search,'[ingredients') !== false) {
$text = preg_replace_callback("/\[ingredients(.*?)\[\/ingredients\]/ism", function($match) {
return str_replace("<li>", "<li class=\"ingredient\">", $match[1]);
}, $search);
$sql = "UPDATE yourtable set post_content='".$text."' where id='".$id."'";
mysql_query($sql);
}
}
mysql_close();
?>
答案 0 :(得分:0)
您需要更改捕获的组:
(\[ingredients.*?\[\/ingredients\])/ism
PHP代码:
$text = preg_replace_callback("/(\[ingredients.*?\[\/ingredients\])/ism", function($match) {
return str_replace("<li>", "<li class=\"ingredient\">", $match[1]);
}, $search);