将字符串编码为字符代码

时间:2012-04-10 16:44:05

标签: php string character

我想将电子邮件地址编码为相应的字符代码,因此在打印时,浏览器会解释字符代码,但机器人会获得编码的字符串而不是解释的字符串。

例如(1):

abc@abc.com

应该作为(2)发送到浏览器(添加空格以便浏览器显示它):

&#97 ;&#98 ;&#99 ;&#64 ;&#97 ;&#98 ;&#99 ;&#46 ;&#99 ;&#111 ;&#109 ;

所以人类读取(1)和网络机器人读取(2)

应该有一个简单的功能或方法来做到这一点,但找不到一个。

3 个答案:

答案 0 :(得分:4)

你可以试试这个:

<?php
$s = "abc@abc.com";
$obj = array_map(function($x){return "&#". strval(ord($x)) . ";";},str_split($s));
echo implode($obj);
?>

答案 1 :(得分:2)

function encode_everything($string){ 
    $encoded = ""; 
    for ($n=0;$n<strlen($string);$n++){ 
        $check = htmlentities($string[$n],ENT_QUOTES); 
       $string[$n] == $check ? $encoded .= "&#".ord($string[$n]).";" : $encoded .= $check; 
    } 
    return $encoded; 
} 

发现于:

http://php.net/manual/en/function.htmlentities.php

答案 2 :(得分:1)

这里有一个很好的功能,我写的是做类似的事情 - 不确定它是否正是你正在寻找的东西,但是它使用了php的ord功能来获取字符串中的每个字符并输出其ascii等价物:

$testString = "I hate – Character – 150" ;

function printAscii($string){      
    for ($n=0;$n<strlen($string);$n++){ 

       echo "<pre>";
       echo ord($string[$n]);
       echo " ---->";
       echo $string[$n];
       echo "</pre>"; 
    }          
} 

$test = printAscii($testString);