我想将电子邮件地址编码为相应的字符代码,因此在打印时,浏览器会解释字符代码,但机器人会获得编码的字符串而不是解释的字符串。
例如(1):
abc@abc.com
应该作为(2)发送到浏览器(添加空格以便浏览器显示它):
a ;b ;c ;@ ;a ;b ;c ;. ;c ;o ;m ;
所以人类读取(1)和网络机器人读取(2)
应该有一个简单的功能或方法来做到这一点,但找不到一个。
答案 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;
}
发现于:
答案 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);