Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> регулярка режет фукву, utf8 
V
    Опции темы
bars80080
Дата 19.2.2010, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



вот, простенькая регулярка, а почему-то режет первую букву при utf8. причём не важно, кириллица, латиница ли

Код

$x = preg_replace('/^[a-zA-ZА-Яа-яЁё0-9 _\.\-,\/]/u', '', $x);

PM MAIL WWW   Вверх
NLspieler
Дата 19.2.2010, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



А какая была цель? Для чего предназначена регулярка?
PM MAIL   Вверх
skyboy
Дата 19.2.2010, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



под "режет букву" имеется в виду замена символа в соответствие с приведенным кодом, или тот факт, что в двухбайтном коде кирилического символа заменяется только первый байт?
PM MAIL   Вверх
Nicklasos
Дата 19.2.2010, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 3.12.2007
Где: Киев

Репутация: 1
Всего: 1



Может глупо, но может дело в том как сохранен файл? 
Есть uft8 with BOM, попробуй сохранить файл как utf8 без bom.
Как-то давно у меня была похожая проблема с этим.
PM MAIL   Вверх
bars80080
Дата 19.2.2010, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



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

$x = 'weg sdf gsger';
var_dump($x);
$x = preg_replace('/^[a-zA-ZА-Яа-яЁё0-9 _\.\-,\/]/u', '', $x);
var_dump($x);

получаю
Код

string(13) "weg sdf gsger" string(12) "eg sdf gsger"

куда он девает букву - не разумею
PM MAIL WWW   Вверх
NLspieler
Дата 19.2.2010, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



bars80080,
Так у тебя же в регулярке так и написано, что бы регулярка заменила первый символ строки на пустую строку и записала результат в туже переменную.

preg_replace - это аналог str_replace, только с регулярками. 

^ - означает начало строки,
в квадратных скобках идет список символов, которые нужно заменить на ''
/^[a-zA-ZА-Яа-яЁё0-9 _\.\-,\/]/u    
Вот и получается, что он удалет в строке первый символ, который входит в список добою перечисленных. 

В чем же проблема, я не могу понять? Или это прикол такой?  smile 



Это сообщение отредактировал(а) NLspieler - 19.2.2010, 16:28
PM MAIL   Вверх
Nicklasos
Дата 19.2.2010, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 3.12.2007
Где: Киев

Репутация: 1
Всего: 1



Блин, точно ведь.
Может автор хотел написать preg_match()? Тогда будет находить первую букву, если не указать
'/^[a-zA-ZА-Яа-яЁё0-9 _\.\-,\/]*/u'

Это сообщение отредактировал(а) Nicklasos - 19.2.2010, 16:35
PM MAIL   Вверх
bars80080
Дата 19.2.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



вот блин, я тормоз. не могу ещё их писать проклятые.
я хотел вырезать всё не указанное. подстава оказалась в том, что в функции (с другими манипуляциями) оно работало с почти нужным результатом

вот так хотел
Код

$x = preg_replace('/[^a-zA-ZА-Яа-яЁё0-9 _\.\-,\/]/u', '', $x);


PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




[ Время генерации скрипта: 0.1226 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.