我需要你的帮助。当用户输入复数词或形容词以找到我母语中的单数词时:捷克语。例如:当用户输入motorový时,它应该返回电机(现在返回motorov)而不是ový,当我进入motorce(返回motorc)时也是如此。似乎2letter和3letter check对我不起作用,1letter check检查工作。您可以在webiste上尝试我的代码。感谢您的努力,时间和良好的建议。
我的代码:
<!DOCTYPE html>
<html lang="cs">
<meta charset="utf-8" />
<head>
<title>Vyhledavac</title>
</head>
<body>
<form method="get" action="index.php">
<input type="text" name="s_word" value="<?php $_GET['s_word'] ?>" /> <input type="submit" value="Hledat" />
</form>
<hr />
<?php
if(isset($_GET['s_word'])){
$s = $_GET['s_word'];
$s_word = $s;
$l_word = substr($s_word,-3);
if($l_word == "ovi" or $l_word == "ovy" or $_l_word == "ový" ){
$s_word = rtrim($s_word,$l_word);
}
$l_word = substr($s_word,-2);
if($l_word == "ce" or $l_word == "ku" or $l_word == "em"){
$s_word = rtrim($s_word,$l_word);
}
$l_word = substr($s_word,-1);
if($l_word == 'y' or $l_word == 'i' or $l_word == 'u' or $l_word == 'e' or $l_word == 'ů' or $l_word == 'ý'){
$s_word = rtrim($s_word,$l_word);
}
$query = "SELECT * FROM search_test WHERE title LIKE '%$s_word%' OR message LIKE '%$s_word%'";
echo "$query";
mysql_connect("localhost","user","passwd") or die('spatne pripojeni');
mysql_select_db("search") or die('nelze najit databazi');
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_general_ci'");
$query = mysql_query($query) or die('spatny dotaz');
$numrows = mysql_num_rows($query);
if($numrows > 0){
while($row = mysql_fetch_assoc($query)){
$id = $row['id'];
$title = $row['title'];
$message = $row['message'];
$website = $row['website'];
echo "<h2><a href='$website'>$title</a></h2><br /><p>$message</p>";
}
}else{
echo "Žádné výsledky pro dotaz: ".$s_word."<br />";
}
}
?>
</body>
</html>
答案 0 :(得分:0)
它只给你一个字符:
$l_word = $s_word[strlen($s_word)-3];
尝试使用substr()。
$l_word = substr($s_word, -3);
答案 1 :(得分:0)
不应该这样:
$l_word = $s_word[strlen($s_word)-3];
类似于:
$l_word = substr($s_word,-3);
你现在拥有它的方式,它只会给你$l_word
一个字符,而不是你认为你减去的数量。这意味着$l_word == "ovi"
永远不会匹配。
例如:
<?php
$s_word = 'motorce';
$l_word = $s_word[strlen($s_word)-3];
echo $l_word;
将返回:
r
Live DEMO 以及您真正想要的是:
<?php
$s_word = 'motorce';
$l_word = substr($s_word,-3);
echo $l_word;
返回:
rce
<强> Live DEMO. 强>
答案 2 :(得分:0)
不是一个完全有效的解决方案,但我会采取的道路(假设UTF-8编码文件):
$word = $_GET["s_word"];
$removelist = array("ový","ce");
foreach($removelist as $entry) {
if ((pos = mb_stripos($word,$entry)) !== FALSE) {
$word = mb_substr($word,$pos);
break;
}
}
现在应该修剪$word
并准备好进行搜索,否则你应该在列表中添加更多内容。