Есть ли кто реализовывал, или готовое решение?
Если кто-то может сделать, отдам в работу.
Модуль https://www.drupal.org/project/numerology_calculator не совсем подходящее решение
Есть ли кто реализовывал, или готовое решение?
Если кто-то может сделать, отдам в работу.
Модуль https://www.drupal.org/project/numerology_calculator не совсем подходящее решение
Комментарии
А алгоритм (метод) расчёта этой вашей кверсуммы у вас имеется?
Тут подробно описано
Ознакомился.
Отписал в ЛС.
3К норм?
Эммм... Вы тоже заинтересованное лицо?
Пишите в ЛС, попробуем договориться.
мне просто интересно сможет ли автор заказать за озвученную им сумму
Всё зависит от степени хотелок автора - т.е. от реализации и обвязки.
Сумма приемлема на мой взгляд, если без изысков и наворотов. В любом случае, есть что уточнить и обсудить, но автор пока не отозвался в ЛС. )
я родился сразу тридцатилетним
3+0 = 3
3*0 = 0
3 и 0 = 30
совпадение? не думаю
илюмината три стороны и глаз похож на 0
вывод, илюминат это я
Цена вопрса?
3К норм?
Скажете, как закажете. Мне тоже надо.
Всем здравия!
Хочу довести до ума этот модуль, есть вопрос: В расчете калькуляции я добавила русские буквы, но результат их не видит, подозреваю, что есть ограничения только на латинские символы ($alpha_val), кто подскажет, как исправить?
/**
* @file
* Defines helper functions.
*/
/**
* Helper function to calculated numerology for name.
*
* @param object $num_username
* The name string.
*
* @return number
* The calculated number.
*/
function num_get_results($num_username) {
$output = "";
$val_ar = array(
'A' => 1, 'B' => 2, 'C' => 3, 'D' => 4, 'E' => 5, 'F' => 6, 'G' => 7, 'H' => 8, 'I' => 9,
'J' => 1, 'K' => 2, 'L' => 3, 'M' => 4, 'N' => 5, 'O' => 6, 'P' => 7, 'Q' => 8, 'R' => 9,
'S' => 1, 'T' => 2, 'U' => 3, 'V' => 4, 'W' => 5, 'X' => 6, 'Y' => 7, 'Z' => 8,
'А' => 1, 'Б' => 2, 'В' => 3, 'Г' => 4, 'Д' => 5, 'Е' => 6, 'Ё' => 7, 'Ж' => 8, 'З' => 9,
'И' => 1, 'Й' => 2, 'К' => 3, 'Л' => 4, 'М' => 5, 'Н' => 6, 'О' => 7, 'П' => 8, 'Р' => 9,
'С' => 1, 'Т' => 2, 'У' => 3, 'Ф' => 4, 'Х' => 5, 'Ц' => 6, 'Ч' => 7, 'Ш' => 8, 'Щ' => 9,
'Ъ' => 1, 'Ы' => 2, 'Ъ' => 3, 'Э' => 4, 'Ю' => 5, 'Я' => 6);
//получить значение, введенное методом отправки
$str = $num_username;
//Перевод в верхний регистр.
$str = strtoupper($str);
//найти длину введенной строки.
$len = strlen($str);
//установить временное значение для расчета
$numero_val = 0;
//Цикл добавления значений
for($i=0; $i<$len; $i++)
{
$alpha_val = $str[$i];
$numero_val = $val_ar[$alpha_val] + $numero_val;
}
// Результат
return $numero_val;
}
Просто мультибайтная кодировка, мэм. В Друпале именно она.
Проще говоря, для поддержки кириллических символов, нужно заменить функции для работы со строками на их мультибайтные аналоги:
mb_strtoupper()
mb_strlen()
Заменила следующее
$len = mb_strlen($str);
Добавила
$numero_val = mb_strlen($numero_val);
Но что все равно 0 показывает..
То есть, судя по всему, вы пытаетесь numeric-тип (
$numero_val
) использовать как строку с целью получения её длины. В PHP так не проканает, поскольку сначала нужно числовой тип преобразовать в литеральный. Например, с помощьюstrval()
:<?php
$numero_val = mb_strlen(strval($numero_val));
?>
Другой вопрос, что смысла в
mb_strlen
в этом случае уже нет, поскольку цифровые символы входят в базовый набор (как и латиница), поэтому тут можно использовать простоstrlen()
.UPD. Во всех непонятных случаях можно (и нужно) читать и выводить промежуточные результаты (
print_r()
,var_export()
... etc) для установления точной точки, где что-то происходит не так, как задумано.<?php
$numero_val = mb_strlen(strval($numero_val));
?> - это не помогло, либо я что-то не так делаю...
А можно какой-либо пример, как можно использовать (print_r(), var_export()... etc) в моем случае
<?php
...
//получить значение, введенное методом отправки
$str = $num_username;
drupal_set_message("Значение: " . var_export($str, TRUE))
//Перевод в верхний регистр.
$str = mb_strtoupper($str);
drupal_set_message("Перевод в верхний регистр: " . var_export($str, TRUE));
//найти длину введенной строки.
$len = mb_strlen($str);
drupal_set_message("длина введенной строки: " . var_export($len, TRUE));
//установить временное значение для расчета
$numero_val = 0;
drupal_set_message("временное значение для расчета: " . var_export($numero_val, TRUE));
...
$numero_val = mb_strlen(strval($numero_val));
drupal_set_message(var_export($numero_val, TRUE));
...
// и т.д. ...
?>
Поставила все но калькулятор перестал работать совсем и я не поняла, какую реакцию я должна увидеть после срабатывания кода, у меня ничего не происходит...
в логах запись - Error: Call to undefined function drupal_set_message()…
Вы вообще-то из модуля Друпала этот ваш код выполняете?
Если да, то в сообщениях Друпала (которые зелененькие появляются на страницах) будет выводиться отладочная информация.
Если нет, то drupal_set_message() конечно работать не будет. И нужно выводить отладку просто через print_r() или var_export().
Честно говоря, есть ощущение что лучше бы вам пока заняться изучением PHP. Вряд ли кто-то заочно и пошагово будет давать рекомендации, как написать нужный вам функционал.
Обойти мультибайтовую строку как массив тоже не получится, цикл должен быть таким
<?php
foreach(preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY) as $alpha_val)
{
$numero_val += $val_ar[$alpha_val];
}
?>
или, если версия PHP 7.4
<?php
foreach(mb_str_split($str) as $alpha_val)
{
$numero_val += $val_ar[$alpha_val];
}
?>
Кстати, да.
Чудесно! Теперь работает подсчет кириллических символов) Благодарю!
К сожалению, этот код неправильно считает символы - он умножает количество символов в поле на 2)))
все, разобралась. не тот вариант кода взяла видимо
Приведите полный пример кода.
Тут еще такая задачка до рисовалась к вопросу, надо число, которое получается в итоге 2-х значными разделить на символы и их тоже сложить, до тех пор пока число не станет однозначным, здесь достаточно один цикл, что-то моя писанина не работает в таком виде
<?php if($numero_val>0){
// выделение 1-го символа
$simv1 = $numero_val.charAt($s);
// выделение 2-го символа
$simv2 = $numero_val.charAt($s+1);
$numero_val = $simv1+$simv2;
}
?>
Здесь также нужно преобразование, только уже из строкового/литерального типа в числовой, например, используя intval().
Азы PHP вообще-то.
я с php на вы.. на бейсике раньше работала, только принялась изучать его
В девятке удалена устаревшая функция drupal_set_message(), надо \Drupal\Core\Messenger\MessengerInterface::addMessage().
Совет: если уж решили вклиниться в чужую тему со своим вопросом, хоть версию Друпал указывайте в явном виде...
Спасибо за ответ. У меня:
PHP 7.4.9
drupal 9.0.5
Каким образом это можно использовать? - \Drupal\Core\Messenger\MessengerInterface::addMessage(), я пишу код в модуле
Например так:
\Drupal::messenger()->addMessage('So good');