字符串

时间:2017-12-02 19:58:05

标签: javascript php regex wordpress

在wordpress中,但更常见的是在php suggestion之后,我想

  1. 将电子邮件地址转换为mailto链接和
  2. 使用str_13()
  3. 编码mailto链接
  4. 通过javascript解码客户端。
  5. 我在第一次计数时做得很好

    add_filter( 'the_content', 'make_clickable',      12 );
    

    我还不知道第三次计数是否有效

    document.write("<n uers=\"znvygb:xvpx@vaprcgvba.pbz\" 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再次解码吗?

    由于

    编辑:这是一个示例$ content:

    <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')
    
    });
    

1 个答案:

答案 0 :(得分:0)

你的正则表达式有点不对,这是一个正确的(DEMO):

`\<a([^>])href\=\"mailto\:([^">]+)\"([^>]*)\>`ism

在你的回调中使用2索引,例如:

function encode_str_13($matches)
{
     return str_13($matches[2]);      
}