我为WordPress日历收集了一个很好的数字替换功能:
function make_bangla_number($str)
{
$engNumber = array(\'0\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\');
$bangNumber = array(\'০\',\'১\',\'২\',\'৩\',\'৪\',\'৫\',\'৬\',\'৭\',\'৮\',\'৯\');
$converted = str_replace($engNumber, $bangNumber, $str);
return $converted;
}
该函数清楚地表明,它使用英语数字,并将其替换为Bānglā数字。
但问题是,有一个类似的函数,我可以将所有公历月份替换为Bānglā脚本,但使用数字函数,我弄乱了日历小部件。因为呼叫:
add_filter( \'get_calendar\', \'make_bangla_number\' );
替换所有数字,即使在HTML中也是如此。假设HTML中的上个月链接:
<td id="prev" colspan="3">
<a title="View posts for October 2013" href="http://localhost/wp_developer/?m=201310">
« Oct
</a>
</td>
正在获取。。。
<td id="prev" colspan="৩">
<a title="View posts for অক্টোবর ২০১৩" href="http://localhost/wp_developer/?m=২০১৩১০">
« অক্টোবর
</a>
</td>
因此,有两个问题:
锚定路径错误,因此未设置存档URL(?m=২০১৩১০
)小部件存档的结构正在破坏,因为HTML获取了错误的HTML属性值(colspan="৩"
)大家都知道,所有的Unicode数字在数值上都可以相等,但不等于它们的二进制值。所以拉丁数字1
不等于Bānglā数字১
与二进制值相比。
那么,我们如何以安全的方式继续使用这样的过滤器/挂钩呢?