我知道在这个论坛上有很多类似的问题,但是第二天我正在通过答案,似乎没什么用。
这是我学习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”)的情况下编写它们 - 第一个代码将起作用。
帮助将深表感谢!!
答案 0 :(得分:3)
您可能无法将substr()与UTF-8一起使用。它根据 bytes 而不是字符来思考。看看mb_substr()。