对_content()中的特定字符数组应用筛选器str_place

时间:2017-11-29 作者:Patrice Poliquin

我正在尝试为创建筛选器the_content() 在那里我可以str_replace() 在特定字符数组()上。

目前,我只对一个字符有效。我想成为

function str_replace_special_caracter($content) {

    // My array of special caracters to get <sup>
    $specialCaracters = array(\'®\', \'™\');

        // Special code to filter in array?

    // Return
    return str_replace(\'®\', \'<sup>®</sup>\', $content);

}

add_filter( \'the_content\', \'str_replace_special_caracter\', 99 );
这个简单的解决方案正在发挥作用。但因为我可能有新的特殊角色<sup></sup> 阵列会更好。

Possible solution?

我看到人们使用strstr PHP Function 当我尝试时,它并没有完全起作用。也许我做错了什么?

function str_replace_special_caracter($content) {

    // My array of special caracters to get <sup>
    $specialCaracters = array(\'®\' => \'<sup>®</sup>\', \'™\' => \'<sup>™</sup>\');

        // Special code to filter in array?

    // Return
    return strstr($content, $specialCaracters);

}

add_filter( \'the_content\', \'str_replace_special_caracter\', 99 );
导致错误:Warning: strstr(): needle is not a string or an integer in /home/.../functions.php on line 186

我在Stackexchange上找到的所有东西都是“双数组”(https://stackoverflow.com/questions/2399286/str-replace-with-associative-array)

我会继续投资,但如果有人知道我怎么做,那就太好了。

1 个回复
最合适的回答,由SO网友:freejack 整理而成

您可以通过以下方式获得所需:

function str_replace_special_caracter($content) {

    // My array of special caracters to get <sup>
    $specialCaracters = array(\'®\', \'™\');

    foreach( $specialCaracters as $character ){

        $content = preg_replace( \'@(\' . preg_quote( $character, \'@\' ) . \')@i\', "<sup>\\\\1</sup>", $content );

    }

    // Return
    return $content;

}

add_filter( \'the_content\', \'str_replace_special_caracter\', 99 );

结束

相关推荐

当返回值为空时,Apply_Filters为什么要返回非空字符串?

因为这个把我的键盘弄坏了。进行了正确的安装,将数据库上载到新的MySQL,并一直在正确使用子主题。但有件事困扰着我,我想不出来。在我的新安装上(ver2.whowhatwhy.com) 我故意将一些小部件留空。我想,当阅读default-widgets.php wp中的文件包括在该小部件上不会显示标题元素。相反,显示标题小部件是因为,出于某种原因,传递的值apply_filters 是一个空格,而不是空白值$instance[\'title\'] 为空。$title = apply_filters( \'