

Склонение имени и фамилии и т.п.
Автор Gnome, 29 нояб. 2013 20:07
Сообщений в теме: 12
#1
Отправлено 29 Ноябрь 2013 - 20:07
вопрос: кто нибудь пробовал сделать?
есть открытый сервис от яндекс (и не только) для того что бы склонять имена, фамилии и т.д.:
каким образом мне ей воспользоваться? можно ли использовать пользовательские функции? моет быть кто то уже имеет опыт склонять?
function inflect ( $name ) {
// Building Request URL
$url = http://export.yandex.ru/inflect.xml?name='.urlencode($name);
// Processing CURL Request
$curl = curl_init( $url );
curl_setopt( $curl, CURLOPT_USERAGENT, Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.61 ); // Just for fun, or ...
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$result = curl_exec( $curl );
curl_close( $curl );
// Preparing Inflections
$cases = array ();
preg_match_all( #\<inflection\s+case\=\"([0-9]+)\"\>(.*?)\<\/inflection\>#si', $result, $m );
// Creating Inflection List
if ( count($m[0]) ) {
foreach ( $m[1] as $i => &$id ) {
$cases[ (int) $id ] = $m[2][$i];
} unset ( $id );
} else return null;
// Sending Request Back to User
if ( count( $cases ) > 1 ) {
return $cases;
} else return false;
есть открытый сервис от яндекс (и не только) для того что бы склонять имена, фамилии и т.д.:
каким образом мне ей воспользоваться? можно ли использовать пользовательские функции? моет быть кто то уже имеет опыт склонять?
function inflect ( $name ) {
// Building Request URL
$url = http://export.yandex.ru/inflect.xml?name='.urlencode($name);
// Processing CURL Request
$curl = curl_init( $url );
curl_setopt( $curl, CURLOPT_USERAGENT, Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.61 ); // Just for fun, or ...
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$result = curl_exec( $curl );
curl_close( $curl );
// Preparing Inflections
$cases = array ();
preg_match_all( #\<inflection\s+case\=\"([0-9]+)\"\>(.*?)\<\/inflection\>#si', $result, $m );
// Creating Inflection List
if ( count($m[0]) ) {
foreach ( $m[1] as $i => &$id ) {
$cases[ (int) $id ] = $m[2][$i];
} unset ( $id );
} else return null;
// Sending Request Back to User
if ( count( $cases ) > 1 ) {
return $cases;
} else return false;
#2
Отправлено 30 Ноябрь 2013 - 13:40
Пользовательские функции можно включать в файл include/function_custom.php, который можно добавить через менеджер внешних файлов. Если файл добавлен, он автоматически подключится.
#3
Отправлено 02 Декабрь 2013 - 21:44
Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "string:" on line 32 "{$n=inflect("исполнительный директор")}" unknown function "inflect"'
function_custom.php - в кодировке UTF-8
function_custom.php - в кодировке UTF-8
#4
Отправлено 02 Декабрь 2013 - 21:59
просто по ФТП нельзя файл "залить"?
#5
Отправлено 02 Декабрь 2013 - 22:30
через менеджер "залил файл"
ошибка та же.
ошибка та же.
#6
Отправлено 03 Декабрь 2013 - 11:36
Опечатка, файл должен быть functions_custom.php.
#7
Отправлено 03 Декабрь 2013 - 11:40
Gnome (02 Декабрь 2013 - 21:59) писал:
просто по ФТП нельзя файл "залить"?
Можно и по ftp, но во-первых, не всегда такая возможность есть, во-вторых в этом случае он у вас не станет частью конфигурации (не будет включаться в бэкап, к примеру). Для работы самого файла это без разницы.
#8
Отправлено 03 Декабрь 2013 - 19:25
Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "string:" on line 32 "{$n=inflect("генеральный директор")}" unknown function "inflect"' in /home/nodesign/public_html/nservis/cb/include/Smarty/sysplugins/smarty_internal_templatecompilerbase.php:441 Stack trace: #0 /home/nodesign/public_html/nservis/cb/include/Smarty/sysplugins/smarty_internal_templateparser.php(2694): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown functio...') #1 /home/nodesign/public_html/nservis/cb/include/Smarty/sysplugins/smarty_internal_templateparser.php(2846): Smarty_Internal_Templateparser->yy_r150() #2 /home/nodesign/public_html/nservis/cb/include/Smarty/sysplugins/smarty_internal_templateparser.php(2946): Smarty_Internal_Templateparser->yy_reduce(150) #3 /home/nodesign/public_html/nservis/cb/include/Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(51): Smarty_Internal_Templateparser->doParse(16, '}') #4 /home/nodesign/public_html/nser in /home/nodesign/public_html/nservis/cb/include/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 441
название файла изменил. внес через менеджер файлов.
такое ощущение, что данный файл не инклюдится.
название файла изменил. внес через менеджер файлов.
такое ощущение, что данный файл не инклюдится.
#9
Отправлено 04 Декабрь 2013 - 09:09
Эта ошибка никак не может связана с добавлением вышеописанного файла, если конечно вы его не добавляли куда то еще, кроме как через менеджер внешних файлов, или прописывали где-нибудь include самостоятельно.
#10
Отправлено 04 Декабрь 2013 - 17:49
первый раз я его добавил через фтп, ошибка, затем удалил, добавил через менеджер точно такая же ошибка... возможно эту функцию включить в другой файл типа functions1.php или functions2.php?
#11
Отправлено 04 Декабрь 2013 - 17:50
или сделать functions3.php?
#12
Отправлено 04 Декабрь 2013 - 18:12
Файлы functions1.php и functions2.php - системные и перетрутся при очередном обновлении ревизии. Собственно, поэтому functions_custom.php и был введен. Тут либо вы что-то не так делаете, либо у нас баг, хотя до вас никто не жаловался на работу файла. Можете прислать заявку в техподдержку для проверки, так я не могу вам ответить в чем дело.
#13
Отправлено 04 Декабрь 2013 - 18:14
Хотя, проверив вашу функцию в начале темы, обнаружил в ней ошибку: присвоение переменной $url строки адреса сделано без обрамляющих кавычек. Но ваш текст ошибки совсем другой.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных