形式中的变量-缺少特殊字符


variable from a form - lack of special characters

我知道这个论坛上有很多类似的问题,但我已经第二天在研究答案了,似乎什么都不起作用。

这是我学习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=数组("niÉ","nisz","ni","nimy","nicie","nyń");然后:if($last3=="nić"&$last4!="gnic")没有结果。

为了进行检查,可以尝试使用"pienić"或"lśnić"等动词(它们不起作用),或者不使用特殊字符("pienic"、"lsnic")来编写它们——第一个代码会起作用。

我们将非常感谢您的帮助!!

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