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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярка учитывает регистр, а не должна 
V
    Опции темы
ashenemy
Дата 16.2.2009, 04:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть такой текст
<a href="http://www.moiki.biz/"><b><span>ссыЛка 6 для теСТу</span></b></a>

регулярка - /<a(.*)?href=(\'|")?http:\/\/www.moiki.biz(\/)?(\'|")?(.*)?>(.*)ссылка 6 для тесту(.*)<\/a>/Uis - не пашет потому что не совпадают регистры, но должно же ведь. помогите плз
PM MAIL   Вверх
skyboy
Дата 16.2.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



данные не в UTF-8 случайно?
PM MAIL   Вверх
ashenemy
Дата 16.2.2009, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Нет данные в cp1251 в какой они должны быть то чтобы нормально все пахало? задолбался уже с этими кодировками
PM MAIL   Вверх
skyboy
Дата 16.2.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



покажи строку с вызовом РНР-функции полностью.
PM MAIL   Вверх
ashenemy
Дата 16.2.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



preg_match("/<a(.*)?href=(\'|")?http:\/\/www.moiki.biz(\/)?(\'|")?(.*)?>(.*)ссылка 6 для тесту(.*)<\/a>/Uis", $string, $return);
PM MAIL   Вверх
Валерия
Дата 16.2.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



у тебя шаблон
//Uis

модификаторы
U, i, s
Так вот, модификатор i это "учитывать регистр", убери его smile
PM MAIL   Вверх
skyboy
Дата 16.2.2009, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Валерия @  16.2.2009,  18:17 Найти цитируемый пост)
модификатор i это

insensetive - не учитывать регистр.
PM MAIL   Вверх
unicross
Дата 16.2.2009, 22:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ashenemy @  16.2.2009,  15:53 Найти цитируемый пост)
preg_match("/<a(.*)?href=(\'|")?http:\/\/www.moiki.biz(\/)?(\'|")?(.*)?>(.*)ссылка 6 для тесту(.*)<\/a>/Uis", $string, $return);

Так будет ошибка. Попробуйте так. У меня работает.
Код

<?php
$str = '<a href="http://www.moiki.biz/"><b><span>ссыЛка 6 для теСТу</span></b></a>';
preg_match('/<a(.*)?href=(\'|")?http:\/\/www.moiki.biz(\/)?(\'|")?(.*)?>(.*)ссылка 6 для тесту(.*)<\/a>/Uis', $str, $return);
print_r($return);
?>

Если не поможет, то пробуем настроить локаль. Добавьте строку в начало скрипта:
Код

setlocale(LC_ALL, "ru_RU.CP1251");


Если не поможет, тогда пробуем вариант, который предположил skyboy и предполагаем, что строка в utf-8:
Код

<?php
$str = '<a href="http://www.moiki.biz/"><b><span>ссыЛка 6 для теСТу</span></b></a>';
preg_match('/<a(.*)?href=(\'|")?http:\/\/www.moiki.biz(\/)?(\'|")?(.*)?>(.*)ссылка 6 для тесту(.*)<\/a>/Uisu', $str, $return);
print_r($return);
?>




Это сообщение отредактировал(а) unicross - 17.2.2009, 00:07
PM MAIL WWW   Вверх
ashenemy
Дата 17.2.2009, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



setlocale(LC_ALL, "ru_RU.CP1251");

спасибо помогло 
PM MAIL   Вверх
xoptov
Дата 21.1.2013, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(ashenemy @ 17.2.2009,  02:42)
setlocale(LC_ALL, "ru_RU.CP1251");

спасибо помогло

У меня та же проблема. К сожалению setlocale(LC_ALL, "ru_RU.CP1251"); не помогло!

Скрипт сохранен в кодировке cp1251.

следующий пример кода:
Код

setlocale(LC_ALL, "ru_RU.CP1251");
$name = "тестирование вырАжЕния";
preg_match('/в([а-я]+)я/i', $name, $match);
var_dump($match);

результат:
Код

array(0) { }


а следующий код:
Код

setlocale(LC_ALL, "ru_RU.CP1251");
$name = "тестирование выражения";
preg_match('/в([а-я]+)я/i', $name, $match);
var_dump($match);

результат:
Код

array(2) { [0]=> string(9) "выражения" [1]=> string(7) "ыражени" }


у кого есть мысли по этому поводу? Заранее благодарен за помощь!

Это сообщение отредактировал(а) xoptov - 22.1.2013, 09:05
PM MAIL   Вверх
Aliance
Дата 22.1.2013, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Наверное потому, что ([а-я]+) не включает в себя символы верхнего регистра. Нужно написать либо ([A-я]+), либо (\w+)
PM MAIL WWW ICQ Skype   Вверх
xoptov
Дата 22.1.2013, 13:04 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Aliance @ 22.1.2013,  10:24)
Наверное потому, что ([а-я]+) не включает в себя символы верхнего регистра. Нужно написать либо ([A-я]+), либо (\w+)

Не правильно, садись 2.

П.С. этот скрипт под Windows работает отлично, а под Linux вот так глючит...
PM MAIL   Вверх
Arantir
Дата 22.1.2013, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


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

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



xoptov, не понимаю, зачем вам именно а-я с модификатором i? Вот А-я прекрасно работает в cp1251. Или, по-вашему, есть другие символы с разным регистром помимо всех в алфавите?

Это сообщение отредактировал(а) Arantir - 22.1.2013, 13:41


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
xoptov
Дата 22.1.2013, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Arantir @ 22.1.2013,  13:40)
xoptov, не понимаю, зачем вам именно а-я с модификатором i? Вот А-я прекрасно работает в cp1251. Или, по-вашему, есть другие символы с разным регистром помимо всех в алфавите?

Вы правы, с диапазоном все можно решить проще. Но мне нужен именно рабочий модификатор i.
Следующий скрипт тоже выводит на экран нулевой результат в Linux:

Код

setlocale(LC_ALL, "ru_RU.CP1251");
$name = "тестирование вырАжЕНия";
preg_match('/жен/i', $name, $match);
var_dump($match);


Модификатор i мне нужен для того чтобы автоматически строить шаблоны из записей в БД. Схема следующая: в БД есть около 800 строк которые должны участвовать в сравнении и если текст совпадает с одной из этих строк то возвращается идентификатор совпавшей строки. Эти 800 строк я преобразую в регулярные выражения по которым и делаю сравнение и тут без модификатора i не обойтись. Как то проблемно преобразовать 800 строк вручную.

PM MAIL   Вверх
Fortop
Дата 22.1.2013, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(xoptov @  22.1.2013,  13:04 Найти цитируемый пост)
Не правильно, садись 2.

П.С. этот скрипт под Windows работает отлично, а под Linux вот так глючит... 

Вот чтобы выпендриваться так, нужно обладать знаниями и способностью решить проблему самостоятельно.

Проверь что у тебя установилась локаль корректно и что она вообще у тебя есть в системе - бездарь.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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