在 WordPress 中,我需要将每个页面内容中的某个短语设为斜体

In WordPress, I need to italicize a certain phrase in each page's content

我有一个正在使用的 WordPress 网站,其中有很大一部分描述植物种类。每个植物名称都以 "R." 开头,后跟物种名称。例如,一个实例是"R. adenogynum." 所有这些名称都必须斜体

这样的例子有很多,手工做会很费时间。我正在尝试编写一个插件,它将 check/italicize $content 中的所有单词,每次 "the_content" 是 运行。换句话说,我使用的是

add_filter( 'the_content', 'italicize' )

function italicize($content) {
... 

执行此操作的函数。

我试过像这样使用爆炸方法:

$words = explode( ' ', $content );

然后检查 $words 数组中的每个单词,但问题是空格和 HTML 标记也是 $content 的一部分,这会混淆所有内容。另外,我将不得不使用 implode 将所有内容重新组合在一起,这也有点混乱。

那么如何使用插件成功地编辑这些植物名称呢?

这份工作最适合preg_replace

你的函数看起来像这样:

function italicize_plant_names ($content) {  
    $content = preg_replace('(R\.\s+\w+)', '<em>[=10=]</em>', $content);
    return content;
}

Demo of the php code, and Regular Expression tester

使用正则表达式语法。

add_filter( 'the_content', function($content) {
    return preg_replace("/(R\. [a-z]+)/", "<i></i>", $content);   
});

这将匹配任何以 "R." 开头,后跟 space,后跟全小写单词并将其替换为该单词的斜体版本的短语。

试试这个插件: http://urbangiraffe.com/plugins/search-regex/

它允许您进行正则表达式搜索并search/replace搜索您的词组。