Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Кодировка скрипта UTF-8 без BOM - замена символов
session_on  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 68
Пользователь №: 39921
На форуме: 2 года, 5 месяцев, 9 дней
Карма: 1




Привет, вопрос конечно нубский) просто я раннее всегда использовал кодировку ANSI, но вот некоторые скрипты понадобилось преобразовать в UTF-8 без BOM, и столкнулся с небольшой проблемой.
Проблема заключается в следующем:
Существует двумерный массив (в ключах массива хранится русская буква)
Далее генерирует скрипт некий текст - это не суть важно, я сразу прописал в $text_create - текст.
Потом подсчитываем сколько в $text_create символов, далее циклом заменяем каждую букву - она может и не замениться даже если существует в двумерном массиве 50% шанс замещения.

Так вот в кодировке ANSI все работает прекрасно, а вот с UTF-8 без BOM работать не хочет...

Подскажите пожалуйста как правильно изменить код чтоб он работал?

Код:


$replace_arr=array(//Массив букв которые могут измениться
"а" => array("а", "a"),
"А" => array("А", "A"),
"в" => array("в", "B"),
"В" => array("В", "B"),
"е" => array("е", "e"),
"Е" => array("Е", "E"),
"з" => array("з", "3"),
"З" => array("З", "3"),
"к" => array("к", "k"),
"К" => array("К", "K"),
"м" => array("м", "M"),
"М" => array("М", "M"),
"н" => array("н", "H"),
"Н" => array("Н", "H"),
"о" => array("о", "o"),
"О" => array("О", "O"),
"р" => array("р", "p"),
"Р" => array("Р", "P"),
"с" => array("с", "c"),
"С" => array("С", "C"),
"т" => array("т", "T"),
"Т" => array("Т", "T"),
"у" => array("у", "y"),
"У" => array("У", "Y"),
"х" => array("х", "x"),
"Х" => array("Х", "X"));


$text_create='Сегодня хорошая погода';//Текст

$textstr=strlen($text_create);//Подсчитываем количество символов

$a=-1;
while($a++<$textstr){
$textsub=substr($text_create, $a, 1);
if(is_array($replace_arr[$textsub])){//Проверяем существование подмассива по ключу выдернутой буквы

if(mt_rand(1,2)==1){//Меняем ее или нет 50 на 50
shuffle($replace_arr[$textsub]);//Мешаем подмассив
$text_create=''.substr($text_create, 0, $a).''.$replace_arr[$textsub][0].''.substr($text_create, $a+1).'';//Изменяем Текст
}

}
}



echo $text_create;



Это сообщение отредактировал session_on - 15.03.2016 - 08:09
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4258
Пользователь №: 29002
На форуме: 5 лет, 4 месяца, 5 дней
Карма: 147




ну вроде как библиотека mb_... должна корректно работать с подстроками в мультибайтовых кодировках, но вот сколько я с подобным не сталкивался, - глючит она. я для себя делаю просто - конвертирую строки в cp1251, делаю что нужно, конвертирую обратно в utf8.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 2 дня
Карма: 40




session_on, зачем придумывать велосипед, заюзай intl


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1355
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 7 дней
Карма: 77




Похоже на скрипт, который не дает считывать текст ботами. Только для людей smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
session_on  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 68
Пользователь №: 39921
На форуме: 2 года, 5 месяцев, 9 дней
Карма: 1




Цитата (redreem @ 15.03.2016 - 11:29)
ну вроде как библиотека mb_... должна корректно работать с подстроками в мультибайтовых кодировках, но вот сколько я с подобным не сталкивался, - глючит она. я для себя делаю просто - конвертирую строки в cp1251, делаю что нужно, конвертирую обратно в utf8.

Пробовал еще до создания темы - все равно не хочет он видеть ключи массива после конвертации.

Решил свой вопрос по другому:
В скрипте с кодировкой UTF-8 без BOM подключаю новый скрипт в кодировке ANSI в котором создается текст (помещаю все текста в отдельный массив "для дальнейшей работы с ними" изначально конвертировав их в utf-8).

Так работает smile.gif

Это сообщение отредактировал session_on - 15.03.2016 - 16:19
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 19 дней
Карма: 170




Костылизация в действии...


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
session_on  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 68
Пользователь №: 39921
На форуме: 2 года, 5 месяцев, 9 дней
Карма: 1




Цитата (T1grOK @ 15.03.2016 - 16:42)
Костылизация в действии...

А у вас есть другие варианты решения? напишите их тогда
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса