【问题标题】:Encode a string into character codes将字符串编码为字符代码
【发布时间】:2012-04-10 16:44:04
【问题描述】:

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

例如(1):

abc@abc.com

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

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

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

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

【问题讨论】:

  • 在本文末尾我们可以找到de字符代码w3.org/TR/REC-html32
  • 这不会打败过去十年左右开发的任何垃圾邮件机器人。
  • 我知道 :) 但是老板要求这个废话
  • 不确定我是否理解“添加空格以便浏览器显示它”位:-?
  • 在每个 ; 之前添加一个空格这样您就可以阅读我在说什么类型的字符代码,因此浏览器会显示代码而不是与该代码对应的字符

标签: php string character


【解决方案1】:

你可以试试这个:

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

【讨论】:

    【解决方案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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-12-06
        • 1970-01-01
        • 2020-05-22
        • 1970-01-01
        • 2012-07-15
        • 2017-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多