用 php 脚本替换特殊字符


Replacing special characters with php script

我想用html代码替换特殊字符。这是代码,但它返回:0

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Coding...</title>
</head>
<body>
<?php
function coding($string)
    {
        $character = array(" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","<","=",">","á","Á","é","É","í","Í","ó","Ó","ö","Ö","ő","Ő","ú","Ú","ü","Ü","ű","Ű","@","[","''","]","^","_","{","|","}","~");
        $code = array("&#32;","&#33;","&#34;","&#35;","&#36;","&#37;","&#38;","&#39;","&#40;","&#41;","&#42;","&#43;","&#44;","&#45;","&#46;","&#47;","&#60;","&#61;","&#62;","&#225;","&#193;","&#233;","&#201;","&#237;","&#205;","&#243;","&#211;","&#246;","&#214;","&#337;","&#336;","&#250;","&#218;","&#252;","&#220;","&#369;","&#368;","&#64;","&#91;","&#92;","&#93;","&#94;","&#95;","&#123;","&#124;","&#125;","&#126;");
        $length=count($character);
        $string1=array();
        for ($a = 0; $a<strlen($string); $a++)
            {
                $found=false;
                $sz='';
                $char=$string[$a];
                for ($i = 0; $i<=count($character); $i++) 
                    {
                        if ($character[$i]==$string[$a])
                            {
                                $sz= $code[$i];
                                $i=count($character);
                                $found=true;
                            };
                    };
                if (!$found) {$sz= $char;}
                //echo $sz;
                $string1[]=$sz; 
            };
        for ($a = 0; $a<=count($string1); $a++)
            {
                $string2=$string2+$string1[$a];
            };
        return $string2;
    };
$string = "áÁéÉíÍóÓöÖőŐúÚüÜűŰ !";
echo coding($string)."'n";
?>
</body>
</html>

编码($string(步骤:

  • 创建两个数组
  • for 循环中逐个检查字符,如果它特别将 html 代码添加到 $string 1 数组中,否则添加原始字符
  • 从数组创建字符串 ($string 2(

请帮助我,我哪里做错了?

如果不谈论真正的问题:

1( 您不初始化$string2变量

2( 循环中的无效条件:

for ($i = 0; $i<=count($character); $i++) 

必须是

for ($i = 0; $i<count($character); $i++)

for ($a = 0; $a<=count($string1); $a++)

必须是

for ($a = 0; $a<count($string1); $a++)

3(你不连接字符串,你把它们转换成数字并总结它们:

$string2=$string2+$string1[$a];

必须是

$string2 = $string2 . $string1[$a];

PHP 中有 2 个标准函数可用:

  • htmlspecialchars((:将普通字符转换为特殊字符。
  • htmlspecialchars_decode((:从特殊字符转换为普通字符。

根据您的代码,您可以找到一个从普通字符传输到特殊(编码(字符的函数。这可能是你试图做的。

    <?php
    // Standard PHP functions
    $string = '&#32;&#33;&#34;&#35;&#36;&#37;&#38;&#39;&#40;&#41;&#42;&#43;&#44;&#45;&#46;&#47;&#60;&#61;&#62;&#225;&#193;&#233;&#201;&#237;&#205;&#243;&#211;&#246;&#214;&#337;&#336;&#250;&#218;&#252;&#220;&#369;&#368;&#64;&#91;&#92;&#93;&#94;&#95;&#123;&#124;&#125;&#126;';
    echo 'htmlspecialchars_decode(): ' . htmlspecialchars_decode($string, ENT_NOQUOTES) . '<br />';
    $string = "'!'"#$%&'()*+,-./<=>áÁéÉíÍóÓöÖoOúÚüÜuU@[']^_{|}~";
    echo 'htmlspecialchars(): ' . htmlentities(htmlspecialchars($string, ENT_COMPAT)) . '<br />';
    // Based on your code
    function coding($string)
    {
        $character = array(" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","<","=",">","á","Á","é","É","í","Í","ó","Ó","ö","Ö","o","O","ú","Ú","ü","Ü","u","U","@","[","''","]","^","_","{","|","}","~");
        $code = array("&#32;","&#33;","&#34;","&#35;","&#36;","&#37;","&#38;","&#39;","&#40;","&#41;","&#42;","&#43;","&#44;","&#45;","&#46;","&#47;","&#60;","&#61;","&#62;","&#225;","&#193;","&#233;","&#201;","&#237;","&#205;","&#243;","&#211;","&#246;","&#214;","&#337;","&#336;","&#250;","&#218;","&#252;","&#220;","&#369;","&#368;","&#64;","&#91;","&#92;","&#93;","&#94;","&#95;","&#123;","&#124;","&#125;","&#126;");
        $result = '';
        $maxind = strlen($string);
        for($i=0; $i<$maxind; $i++) {
            $index = array_search($string[$i], $character);
            if ($index!==false) $result .= $code[$index];
        }
        return $result;
    };
    $string = "'!'"#$%&'()*+,-./<=>áÁéÉíÍóÓöÖoOúÚüÜuU@[']^_{|}~";
    echo 'coding(): ' . htmlentities(coding($string)) . '<br />'; // htmlentities() to show "as is" in a html page

。给出这个:

htmlspecialchars_decode(): !"#$%&'()*+,-./<=>áÁéÉíÍóÓöÖőŐúÚüÜűŰ@[']^_{|}~
htmlspecialchars(): '!&quot;#$%&amp;'()*+,-./&lt;=&gt;áÁéÉíÍóÓöÖoOúÚüÜuU@[']^_{|}~
coding(): &#39;&#33;&#34;&#35;&#36;&#37;&#38;&#39;&#40;&#41;&#42;&#43;&#44;&#45;&#46;&#47;&#60;&#61;&#62;&#225;&#193;&#233;&#201;&#237;&#205;&#243;&#211;&#246;&#214;&#337;&#336;&#250;&#218;&#252;&#220;&#369;&#368;&#64;&#91;&#92;&#93;&#94;&#95;&#123;&#124;&#125;&#126;