我正在尝试为创建筛选器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)
我会继续投资,但如果有人知道我怎么做,那就太好了。
最合适的回答,由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 );