Пытаюсь рандомно заменять русские буквы на английские:
$trans = array(
'и' => 'U',
'р' => 'P',
'е' => 'E',
);
$str = 'Привет';
$res = replace($str, $trans);
echo $res;
function replace($str, $trans)
{
for ($i = 0; $i < mb_strwidth($str); $i++) {
if (rand(0,1) and isset($trans[$str[$i]])) $str[$i] = $trans[$str[$i]];
}
return $str;
}
Но вот только замена не срабатывает, я как понял из за того что буквы русские, и позицию неверно считывает скрипт. Как можно подобное сделать с русскими буквами чтобы при этом слово не ломалось?
не срабатывает, я как понял из за того что буквы русские
Да, так и есть. Для кириллицы нужно использовать нечто вроде preg_split()
. Эта функция корректно разбивает исходную строку на массив символов (в вашем случае - букв), и далее нужно обрабатывать этот массив (а не исходную строку, как было в вашем коде):
$trans = array(
'и' => 'U',
'р' => 'P',
'е' => 'E',
);
$str = 'Привет';
$res = replace($str, $trans);
echo $res;
function replace($str, $trans) {
$tmp = preg_split('~~u', $str, null, PREG_SPLIT_NO_EMPTY);
for ($i = 0; $i < mb_strwidth($str); $i++) {
if (rand(0, 1) & isset($trans[$tmp[$i]])) {
$tmp[$i] = $trans[$tmp[$i]];
}
}
return join($tmp);
}
Подскажите, пожалуйста, как организовать хранение настроек пользователей: в cookie или в базе данных? Например, пользователь на сайте выбрал,...
Устанавливаю вот такой вот модуль https://opencartforumcom/files/file/1011-dostavka-po-oblastyam-na-karte/ , но по какой-то причине не меняется его статус и он не хочет работать
Можно ли использовать инструкцию echo внутри массива $_SESSION? Нужно, чтобы каждый элемент массива имел уникальное имя