Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Конфузы с киррилицей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
SunChase
Отправлено: 24 Октября, 2011 - 11:46:08
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Доброго времени суток.

Подскажите пожалуйста, в чём может быть причина, ну и собственно, как решить следующие проблемы:

1. Есть строка, содержащая в себе текст(допустим $str), написанный кириллицей. При отображении его при помощи echo и т.д. текст отображается нормально, но когда я пытаюсь обратится к определённой букве строки, то есть пишу echo $str[1] ), то получаю <?>.

2. В использовании регулярных выражений я пока новичёк, но всёже написал такую простую функцию, удаляющую все лишние символы из строки. Выглядит она так:

PHP:
скопировать код в буфер обмена
  1. function sed_alphaonly($text)
  2. {
  3.         return(preg_replace('/[^a-zA-ZА-Яа-я0-9\-_]/', '', $text));
  4. }


При попытке использовать её на строке, содержащей кириллические символы, на выходе я получил всё те же <?> на местах, где была киррилица.

ПХП файл, в котором проводил данные "опыты", сконвертирован в UTF-8 NO BOM(ну или както так).

Заранее благодарен.
 
 Top
Мелкий Супермодератор
Отправлено: 24 Октября, 2011 - 11:53:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Используйте модификатор u.


-----
PostgreSQL DBA
 
 Top
illy
Отправлено: 24 Октября, 2011 - 11:56:37
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




PHP:
скопировать код в буфер обмена
  1. function sed_alphaonly($text)
  2. {
  3.         return(preg_replace('/[^a-zа-яё0-9\-_]/mUsi','',$text));
  4. }

(Отредактировано автором: 24 Октября, 2011 - 12:04:17)



-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Viper
Отправлено: 24 Октября, 2011 - 11:57:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




модификатор u добавить кагбэ надо
CODE (htmlphp):
скопировать код в буфер обмена
  1. '/[^a-zA-ZА-Яа-я0-9\-_]/u'


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
SunChase
Отправлено: 24 Октября, 2011 - 12:06:37
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




illy пишет:
function sed_alphaonly($text)
{
return(preg_replace('/[^a-zа-яё0-9\-_]/mUsi','',$text));
}


не дало результата.

Viper пишет:
модификатор u добавить кагбэ надо
/[^a-zA-ZА-Яа-я0-9\-_]/u'


Спасибо. Помогло.

А вот как быть с 1й проблемой? Есть идеи?
 
 Top
EuGen Администратор
Отправлено: 24 Октября, 2011 - 12:17:09
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Например, написать свой вариант. Вроде этого:
PHP:
скопировать код в буфер обмена
  1. function str_index($string, $index)
  2. {
  3.    $rgString=preg_split('//u', $string, -1,1);
  4.    return $rgString[$index];  
  5. }
  6.  
  7. $string='Кириллица';
  8. var_dump(str_index($string, 2));

Или стандартный substr с mb_string


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SunChase
Отправлено: 24 Октября, 2011 - 12:23:34
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




EuGen, спасибо. Воспользовался substr для решения задачи.
 
 Top
LIME
Отправлено: 24 Октября, 2011 - 16:10:00
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




illy большая U это уменьшение жадности
для utf маленькая u
вы в своем репертуаре
лишбы ченить написать
 
 Top
illy
Отправлено: 24 Октября, 2011 - 18:32:38
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




LIME пишет:
вы в своем репертуаре
лишбы ченить написать

ты меня раскусил Язычок


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
LIME
Отправлено: 24 Октября, 2011 - 19:33:51
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




уберите его от меня
ща не сдержусь забаните
(Добавление)

illy неужели вам не стыдно?
измените мировосприятие пжлст
вы же не глупый в принципе человек
перестаньте ерундой страдать прошу
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Кодировки и все смежное »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB