|
|
|
| Как известно данная функция учитывает регистр символов.
Попробовал слова обработать функцией strtolower (), но почему то не помогло?
Так все работает:
<?
$str1 = "Дом";
$str1 = strtolower($str1); // Приводим все символы к нижнему регистру
$str2 = "дом";
$str2 = strtolower($str2); // Приводим все символы к нижнему регистру
$var1 = similar_text($str1, $str2, &$tmp);
if ($tmp >= 70)
{
echo "$tmp <br>"; // схожесть строк в процентах
}
?>
А так почему то нет:
<?
include(" ");//Подключаемся к базе данных
$str1 = "дом";
$str1 = strtolower($str1); // Приводим все символы к нижнему регистру
$a1 = explode(" ",$str1); // Заносим слова в массив
$result = mysql_query("SELECT * FROM doska ORDER BY id DESC",$db);
$myrow = mysql_fetch_array ($result);
do
{
$str2 = $myrow['zagolovok'];
$str2 = strtolower($str2); // Приводим все символы к нижнему регистру
$a = explode(" ",$str2); // Заносим слова в массив
for($i = 0; $i < count($a); $i++)
{
$var1 = similar_text($a1[0], $a[$i], &$tmp);
if ($tmp >= 70)
{
$id = $myrow['id'];
echo "$id <br>"; // схожесть строк в процентах
}
}
}
while ($myrow = mysql_fetch_array ($result));
?>
|
Т.е. если в базе слово "дом" с заглавной буквы, то совпадений уже 0% | |
|
|
|
|
|
|
|
для: sega_z
(29.08.2011 в 15:42)
| | А кодировки базы данных и скрипта совпадают? | |
|
|
|
|
|
|
|
для: cheops
(29.08.2011 в 18:57)
| | Кодировка базы данных ср-1251. А как узнать кодировку скрипта?
Причем, на локальном сервере работает, а на удаленном нет!!! | |
|
|
|
|
|
|
|
для: sega_z
(29.08.2011 в 19:28)
| | Самое просто, это локально, когда у вас все отображается корректно, посмотреть в настройках браузера какую кодировку он выбрал для отображения страницы. | |
|
|
|
|
|
|
|
для: cheops
(30.08.2011 в 17:10)
| | А как посмотреть кодировку страницы в браузере? | |
|
|
|
|
|
|
|
для: sega_z
(01.09.2011 в 09:27)
| | В разных браузерах это осуществляется по-разному, обычно, эти пункты меню находятся в разделе Вид, Кодировка. | |
|
|
|
|
|
|
|
для: cheops
(01.09.2011 в 11:51)
| | У меня кодировка браузера Windows-1251 | |
|
|
|
|
|
|
|
для: sega_z
(29.08.2011 в 15:42)
| | а у меня вопрос не по теме!
А что это за амперсанд в аргументах функции?
$var1 = similar_text($str1, $str2, &$tmp);
|
| |
|
|
|
|
|
|
|
для: DJ Paltus
(01.09.2011 в 15:03)
| | >а у меня вопрос не по теме!
>А что это за амперсанд в аргументах функции?
>
> $var1 = similar_text($str1, $str2, &$tmp);
>
|
Цитировать не буду, посмотрите ссылку все станет ясно - http://www.php.su/functions/custom/?2 | |
|
|
|
|
|
|
|
для: DJ Paltus
(01.09.2011 в 15:03)
| | При указании амперсанда перед параметром функции, вы включаете так называемый "побочный эффект". Пусть имеется скрипт, изменение значения переменной $test внутри функции не отражается на внешней переменной.
<?php
$test = 1;
echo "test = $test<br>"; // 1
funct($test); // 2
echo "test = $test<br>"; // 1
function funct($test)
{
$test++;
echo "test = $test (in funct)<br>";
}
?>
| если же параметр передается по ссылке, то измененное значение переменной $test передается во внешнюю среду, после выполнения функции.
<?php
$test = 1;
echo "test = $test<br>"; // 1
funct($test); // 2
echo "test = $test<br>"; // 2
function funct(&$test)
{
$test++;
echo "test = $test (in funct)<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: DJ Paltus
(01.09.2011 в 15:03)
| | Если в исходной функции не используются &, то при помощи & перед параметром можно явно включить "побочный эффект". Однако, такой подход признан устаревшим и будет исключен в следующих версиях языка. Объект и массивы так и так передаются по ссылкам и считается, что нет надобности в явном включении режима передачи по ссылки с порождением "побочного эффекта".
<?php
$test = 1;
echo "test = $test<br>"; // 1
funct(&$test); // 2
echo "test = $test<br>"; // 2
function funct($test)
{
$test++;
echo "test = $test (in funct)<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.09.2011 в 15:28)
| | Ну так в чём все таки дело?
Кто нибудь подскажет, почему на локальном сервере данный скрипт работает нормально, а на удаленном нет. | |
|
|
|
|
|
|
|
для: sega_z
(01.09.2011 в 16:16)
| | С 80% вероятностью дело в локали, если в Windows она выставляется при установки операционной системы, то в UNIX-подобных средах локаль для русских кодировок нужно выставлять явно. Если это хостинг, то хорошо бы попытать службу тех.поддержки на предмет работоспособности функции или хотя бы параметров локали (они для разных серверов могут быть разными). | |
|
|
|
|
|
|
|
для: cheops
(01.09.2011 в 15:28)
| | Вроде как маленькая лазейка к глобализации переменной, имхо. Спасибо, ВЖВУ!. (век живи...) | |
|
|
|