我想将电子邮件地址编码为其相应的字符代码,因此当打印它时,字符代码由浏览器解释,但机器人得到编码字符串而不是解释字符串。
例如(1):
abc@abc.com
应作为 (2) 发送到浏览器(添加空格以便浏览器显示):
a ;b ;c ;@ ;a ;b ;c ;. ;c ;o ;m ;
所以人类阅读(1)和网络机器人阅读(2)
应该有一个简单的功能或方法来做到这一点,但找不到。
你可以试试这个:
<?php
$s = "abc@abc.com";
$obj = array_map(function($x){return "&#". strval(ord($x)) . ";";},str_split($s));
echo implode($obj);
?>
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;
}
发现于:
这是我写的一个简洁的函数来做类似的事情 - 不确定它是否正是你正在寻找的,但它使用 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);