将字符串编码为字符代码


Encode a string into character codes

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

例如 (1):

abc@abc.com

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

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

所以人类阅读(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; 
} 

位于:

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

这是我写的一个简洁的函数来做类似的事情 - 不确定它是否正是你要找的,但它使用 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);