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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Группировка символов preg_match 
:(
    Опции темы
night00
  Дата 4.1.2012, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте.

Код

$eng_char_pattern = "/^([0-9a-zA-Z\\.\\, _+\\-\\s]+)\$/D";


Никак не могу подобрать правильное регулярное выражение, чтобы оно пропускало в троке " но не пропускало & и ; по отдельности.
Бьюсь уже целый день, но решения не нашёл..

Заранее спасибо..
PM MAIL   Вверх
ksnk
Дата 5.1.2012, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Код

$eng_char_pattern = "/^([^&]|&\w+;)+$/D";

Вместо ^& можно подставить тот длинный символьный класс, если очень нужно


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
night00
Дата 5.1.2012, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, но проблема в том, что такая регулярка пропускает символы & и ; по отдельности.
А смысл в том, чтобы эти символы пропускались _только_ в сочетании с quot и в строгой последовательности ( " )
То есть если дадут &q; или &quo; или &touq; или &; - они пройти не должны, только "

Это сообщение отредактировал(а) night00 - 5.1.2012, 11:53
PM MAIL   Вверх
ksnk
Дата 5.1.2012, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Ну и? Проходят, чтоли?
Код

$tests=array(
'lasdnxfr & ыча ук очалукопке', //not match
'lasdnxfr   ыча ук очалукопке', // match
'lasdnxfr &вась; ыча ук очалукопке', //not match
'lasdnxfr & nbsp ; ыча ук очалукопке', //not match
'lasdnxfr &xxx; ыча ук очалукопке', // match
'lasdnxfr &&&&; ыча ук очалукопке', //not match
);
$eng_char_pattern = "/^(?:[^&]|&[a-z]+;)+$/iD";
foreach($tests as $v){
echo '<hr>'.htmlspecialchars($v).'<br>';
  if(preg_match($eng_char_pattern ,$v))
  echo 'match
';
  else
    echo 'not match
';
 
};

поменял \w на [a-z] и добавил модификатор i, чтобы не проходили русские буквы в регулярке + поменят на незахватывающую маску. Все остальное - тоже самое.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
night00
Дата 5.1.2012, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нет, но проходят, к примеру, &amp; и |
Мне нужно проверить название фирмы на английском, например, JSC &quot;New Time&quot;
Соответственно, никаких &amp; и | там быть не должно..

пробелA-Za-z и строго &quot; - вот только это должно быть разрешено..
PM MAIL   Вверх
ksnk
Дата 5.1.2012, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Код

$eng_char_pattern = '/^(?:[0-9a-z\.\,_+\-\s]|&quote;)+$/iD';




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
night00
Дата 5.1.2012, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо!

только $eng_char_pattern = '/^(?:[0-9a-z\.\,_+\-\s]|&quot;)+$/iD';

Это сообщение отредактировал(а) night00 - 5.1.2012, 14:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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