php - 从表单变量 - 缺少特殊字符

时间:2013-12-10 15:21:38

标签: php utf-8

我知道在这个论坛上有很多类似的问题,但是第二天我正在通过答案,似乎没什么用。

这是我学习PHP的第一周,所以请尝试以简单的方式回答:)所以:

我正在创建一个共轭器,到目前为止一切顺利,但前提是我不使用特殊字符。由于波兰语动词都是关于特殊字符的,所以我被卡住了。

此代码有效(按“提交”后,屏幕上会显示结合):

第1页:

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8"> 
        <title>Conjugator</title>
    </head>
    <body>  
    <form action="new.php" accept-charset="UTF-8" method="post" >
Conjugate: <input type="text" name="verb"><br>
<input type="submit">
</form>
    </body>
</html>

第2页:

    <?php
header('Content-Type: text/html; charset="UTF-8"');

$verb = $_POST['verb'];
$last2 = substr ($verb, -2);
$last3 = substr($verb, -3);
$last4 = substr($verb, -4);

$root2 = str_replace($last2, "", $verb);
$root3 = str_replace($last3, "", $verb);
$root4 = str_replace($last4, "", $verb);


    $nic = array("nie", "nisz", "ni", "nimy", "nicie", "nia" );    
    $gnic = array("gnije", "gnijesz", "gnije", "gnijemy", "gnijecie", "gnija");
    $ac = array("am", "asz", "a", "amy", "acie", "aja");

  if ($last3 == "nic" && $last4 != "gnic") {
    foreach ($nic as $one) {
        echo "<li>$root3$one</li>";
    }
}

elseif ($last4 == "gnic") {
foreach ($gnic as $one) {
echo "<li>$root4$one</li>";
}
}

elseif ($last2 == "ac") {
    foreach ($ac as $one) {
        echo "<li>$root2$one</li>";
    }
}
    ?>

但如果我写的例如:        $ nic = array(“nię”,“nisz”,“ni”,“nimy”,“nicie”,“nią”); 然后:      if($ last3 ==“nić”&amp;&amp; $ last4!=“gnic”) 没有结果显示出来。

要检查,请尝试使用“pienić”或“lśnić”之类的动词(它们不起作用)或者在没有特殊字符(“pienic”,“lsnic”)的情况下编写它们 - 第一个代码将起作用。

帮助将深表感谢!!

1 个答案:

答案 0 :(得分:3)

您可能无法将substr()与UTF-8一起使用。它根据 bytes 而不是字符来思考。看看mb_substr()。