3

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

例如(1):

abc@abc.com

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

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

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

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

4

3 回答 3

4

你可以试试这个:

<?php
$s = "abc@abc.com";
$obj = array_map(function($x){return "&#". strval(ord($x)) . ";";},str_split($s));
echo implode($obj);
?>
于 2012-04-10T16:53:04.967 回答
3
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

于 2012-04-10T16:49:24.543 回答
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);
于 2015-12-17T19:15:26.213 回答