我想用html代码替换特殊字符。这是代码,但它返回:0。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Coding...</title>
</head>
<body>
<?php
function coding($string)
{
$character = array(" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","<","=",">","á","Á","é","É","í","Í","ó","Ó","ö","Ö","ő","Ő","ú","Ú","ü","Ü","ű","Ű","@","[","''","]","^","_","{","|","}","~");
$code = array(" ","!",""","#","$","%","&","'","(",")","*","+",",","-",".","/","<","=",">","á","Á","é","É","í","Í","ó","Ó","ö","Ö","ő","Ő","ú","Ú","ü","Ü","ű","Ű","@","[","\","]","^","_","{","|","}","~");
$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 = ' !"#$%&'()*+,-./<=>áÁéÉíÍóÓöÖőŐúÚüÜűŰ@[\]^_{|}~';
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(" ","!",""","#","$","%","&","'","(",")","*","+",",","-",".","/","<","=",">","á","Á","é","É","í","Í","ó","Ó","ö","Ö","ő","Ő","ú","Ú","ü","Ü","ű","Ű","@","[","\","]","^","_","{","|","}","~");
$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(): '!"#$%&'()*+,-./<=>áÁéÉíÍóÓöÖoOúÚüÜuU@[']^_{|}~
coding(): '!"#$%&'()*+,-./<=>áÁéÉíÍóÓöÖőŐúÚüÜűŰ@[\]^_{|}~