回调在字符串
在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')
});
回答:
你的正则表达式是有点不对,这里是一个正确的(DEMO):
`\<a([^>])href\=\"mailto\:([^">]+)\"([^>]*)\>`ism
而且在回调使用2
指标,如:
function encode_str_13($matches) {
return str_13($matches[2]);
}
以上是 回调在字符串 的全部内容, 来源链接: utcz.com/qa/258066.html