回调在字符串

在WordPress的,但在PHP每个正则表达式匹配更普遍,下面这个suggestion,我想回调在字符串

  1. 转换电子邮件地址mailto链接和
  2. 编码的mailto与str_13链接()
  3. 要通过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

回到顶部