我正在尝试用高棉(柬埔寨)数字替换存档小部件链接中的罗马数字(以及所有其他数字)。
但是,虽然我确实用这段代码替换了链接文本,但它也替换了链接url,然后断开了链接。
如何只替换存档链接文本而不是url?
function convert_numbers_to_khmer( $string ) {
$khmer_numbers = array(\'០\', \'១\', \'២\', \'៣\', \'៤\', \'៥\', \'៦\', \'៧\', \'៨\', \'៩\', \'.\');
$english_numbers = array(\'0\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'.\');
return str_replace($english_numbers, $khmer_numbers, $string);
}
function make_khmer_time( $the_time ) {
if ( get_bloginfo( \'language\' ) == \'km\' ) {
$the_time = convert_numbers_to_khmer( $the_time );
}
return $the_time;
}
add_filter( \'get_the_time\', \'make_khmer_time\' );
add_filter( \'get_the_date\', \'make_khmer_time\' );
add_filter(\'comments_number\', \'make_khmer_time\');
add_filter(\'get_archives_link\', \'make_khmer_time\');
最合适的回答,由SO网友:Sally CJ 整理而成
您可以使用正则表达式和preg_replace_callback()
功能:
function _make_khmer_link_replace_callback( array $matches ) {
return \'<a\' . $matches[1] . \'>\' . convert_numbers_to_khmer( $matches[2] ) . \'</a>\';
}
function make_khmer_link( $link ) {
if ( get_bloginfo( \'language\' ) == \'km\' ) {
$link = preg_replace_callback( \'#<a(.*?)>(.+?)</a>#\', \'_make_khmer_link_replace_callback\', $link );
}
return $link;
}
add_filter(\'get_archives_link\', \'make_khmer_link\');
PS:您可以看到完整的代码(包括您现有的
function
s) 在
Pastebin.