在WordPress的,但在PHP每个正则表达式匹配更普遍,下面这个suggestion,我想回调在字符串
- 转换电子邮件地址mailto链接和
- 编码的mailto与str_13链接()
- 要通过javascript解码客户端。
我一日数做精
add_filter('the_content', 'make_clickable', 12);
,我还不知道是否三号计数,这将工作
document.write("<n uers=\"znvygb:[email protected]\" ery=\"absbyybj\">Fraq n zrffntr</n>".replace(/[a-zA-Z]/g,
function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);}));
我想我要什么要做的只是在替换之后的每一次出现中,而不是preg_replace注入str_13()。我发现this question并试图答案传递给我的情况:
add_filter('the_content', 'email_encoder', 99);
function email_encoder($content) {
return preg_replace_callback('`\<a([^>])href\=\"mailto\:([^">])\"([^>]*)\>`ism', 'encode_str_13', $content);
}
function encode_str_13($matches)
{
return str_13($matches[1]);
}
这改变不了什么,我很茫然,为什么。我怀疑这是我从here或数组项目地址获得的正则表达式,如果我稍微改变它,字面上什么都不会显示,直到我恢复更改(我似乎对我的想法并不正确)。
你能帮我编码所有的mailto链接并纠正我的javascript来解码他们吗?
感谢
编辑:这是一个例子$内容:
<p>text<br>
text<br>
text<br>
numbers<br>
<a href="mailto:....>...</a><br>
<a href="...." rel="nofollow">....</a></p>
而事实上我确实意味着str_rot13()而不是str_13()
EDIT2:
的JS我经过更多的摆弄之后就是这样的:
var collection = jQuery(".encoded");
collection.each(function() {
var encoded = jQuery(this).html();
var decoded = encoded.replace(/[a-zA-Z]/g, function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);});
jQuery(this).html(decoded);
jQuery(this).prop('class', 'decoded')
});
你能提供样品'$ content'?我也不熟悉'str_13',那是什么?也许它应该是http://php.net/manual/en/function.str-rot13.php? – chris85
啊!你是对的,如果我得到了正确的正则表达式,这会让我感到困扰,谢谢! – user148585