3

電子メールアドレスを対応する文字コードにエンコードしたいので、印刷時に文字コードがブラウザによって解釈されますが、ロボットは解釈された文字列ではなく、エンコードされた文字列を取得します。

例 (1):

abc@abc.com

(2) としてブラウザーに送信する必要があります (ブラウザーに表示されるように空白が追加されます)。

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

つまり、人間が (1) を読み取り、Web ロボットが (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 に答える