我想用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)步骤:
请帮助我,我哪里出错了?
答案 0 :(得分:0)
PHP中有两个标准函数:
根据您的代码,您会找到一个从普通字符转换为特殊字符(编码)的函数。这可能就是你想要做的。
<?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(): '!"#$%&'()*+,-./<=>áÁéÉíÍóÓöÖőŐúÚüÜűŰ@[\]^_{|}~
答案 1 :(得分:0)
如果不谈真正的问题:
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];