Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: RegExp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
EvgeniiSp
146 / 136 / 57
Регистрация: 05.06.2009
Сообщений: 310
1

Ошибка в регулярном выражении

24.10.2010, 14:17. Просмотров 1935. Ответов 15
Метки нет (Все метки)

Здравствуйте, возникла проблема с регулярным выражением.
PHP
1
regexp = "|<span>\s+<b>24 октября 2010\.<\/b>\s+&nbsp;((.|\s)+)<\/span>|"
Возникает ошибка: Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '\' in Z:\home\localhost\www\site_creator\site_creater.class.php on line 316.
Судя по всему, ошибка возникает в месте ((.|\s)+). Каким образом это возможно решить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2010, 14:17
Ответы с готовыми решениями:

Ошибка в регулярном выражении
Есть текст $text = '1#{\b 37\par К88\par \b0 \b Акулова, З. М. \b0 \par...

Ошибка в регулярном выражении
Составляю регулярное выражение для перевода url из текста, в активную ссылку....

Ошибка в регулярном выражении
Доброго времени суток. В чем может быть ошибка: Warning: preg_match_all():...

Ошибка в регулярном выражении
Приветствую!! Помогите найти ошибку:...

Парсинг в регулярном выражении
Добрый день. Нужна помощь в регулярном выражении. Как получить содержимое...

15
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
24.10.2010, 14:29 2
EvgeniiSp, покажите код, где написана функция preg_match_all()
0
GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
24.10.2010, 14:49 3
а так?
PHP
1
regexp = "#<span>\s+<b>24 октября 2010\.<\/b>\s+&nbsp;((.|\s)+)<\/span>#"
0
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
24.10.2010, 14:58 4
GalaX, если на то пошло, то уже лучше так:
PHP
1
regexp = "/<span>\s+<b>24 октября 2010\.<\/b>\s+&nbsp;((.|\s)+)<\/span>/"
0
EvgeniiSp
146 / 136 / 57
Регистрация: 05.06.2009
Сообщений: 310
24.10.2010, 15:00  [ТС] 5
romchiksoad,
PHP
1
2
3
    // get a text
            $regexp = "|<span>\s+<b>24 октября 2010\.<\/b>\s+&nbsp;((.|\s)+)<\/span>|";
            preg_match_all($regexp, $content, $text);
GalaX, так не работает.
0
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
24.10.2010, 15:00 6
или так:
PHP
1
regexp = "#<span>\s+<b>24 октября 2010\.</b>\s+&nbsp;((.|\s)+)</span>#"
0
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
24.10.2010, 15:01 7
EvgeniiSp, что в переменной content
0
GalaX
24.10.2010, 15:01
  #8

Не по теме:

Цитата Сообщение от romchiksoad Посмотреть сообщение
то уже лучше так
мм.. точно!

0
EvgeniiSp
146 / 136 / 57
Регистрация: 05.06.2009
Сообщений: 310
24.10.2010, 15:06  [ТС] 9
Цитата Сообщение от romchiksoad Посмотреть сообщение
EvgeniiSp, что в переменной content
Содержимое web-страницы $curl = curl_init($get_url);.

Добавлено через 2 минуты
С кодом у меня все в порядке. Перед этим регулярные выражения работали правильно, а после создания выражения с символом - "|", работать перестало.
0
GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
24.10.2010, 15:08 10
Цитата Сообщение от EvgeniiSp Посмотреть сообщение
а после создания выражения с символом - "|", работать перестало.
дык измени их
0
EvgeniiSp
146 / 136 / 57
Регистрация: 05.06.2009
Сообщений: 310
24.10.2010, 15:13  [ТС] 11
GalaX, нужный результат получается только с таким выражением. Может можно и по-другому сделать, но я не большой специальст в рег. выражениях. Это выражение рабочее. Проверено на http://www.pcre.ru/eval/, но у меня почему-то выдает ошибку.
0
GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
24.10.2010, 15:35 12
последний вариант, который предложил romchiksoad, синтаксически верно, если не работает, то скорее всего сама регулярка неверно записана. что она вообще искать и заменять?
0
Vovan-VE
13159 / 6544 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
24.10.2010, 19:00 13
EvgeniiSp, Сформулируйте задачу, чтО надо искать?
/выражение/модификаторы
Изначально Вы метасимвол | использовали для разделителя, поэтому оно на первой попавшейся | закончило само выражение и все остальное посчитало модификаторами. Если в таком случае | заэкранировать, то получится символ "|", и метсимвол альтернативы уже никак не получится.
0
EvgeniiSp
146 / 136 / 57
Регистрация: 05.06.2009
Сообщений: 310
25.10.2010, 08:32  [ТС] 14
GalaX, выражение должно получить текст между <span>\s+<b>24 октября 2010\. и <\/span>.
Когда обрамляю выражение символами # и / возникает ошибка "Соединение закрыто удалённым сервером", сам скрипт работает на локальной машине.
Как можно переписать часть ((.|\s)+) на что-нибудь подобное?
0
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
25.10.2010, 08:46 15
Цитата Сообщение от EvgeniiSp Посмотреть сообщение
Как можно переписать часть ((.|\s)+) на что-нибудь подобное?
Не в этом ошибка скорей всего.
Цитата Сообщение от EvgeniiSp Посмотреть сообщение
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '\' in Z:\home\localhost\www\site_creator\site_creater.class.php on line 316
Эта ошибка говорит о другом, по крайней мере.

Цитата Сообщение от EvgeniiSp Посмотреть сообщение
возникает ошибка "Соединение закрыто удалённым сервером"
Это Вы писали эту ошибку или PHP, а Вы просто перевели на свой лад? Если так, то покажите ошибку, которую пишет сам PHP.

Добавлено через 2 минуты
Код
/<span>\s+<b>24 октября 2010\.<\/b>\s+(\s\m)+<\/span>/
0
EvgeniiSp
146 / 136 / 57
Регистрация: 05.06.2009
Сообщений: 310
25.10.2010, 08:58  [ТС] 16
Цитата Сообщение от romchiksoad Посмотреть сообщение
Это Вы писали эту ошибку или PHP, а Вы просто перевели на свой лад? Если так, то покажите ошибку, которую пишет сам PHP.
Эту ошибку выдает браузер на русском языке.
Проблема решена. Переписал немного выражение:
PHP
1
$regexp = "|<span>\s+<b>24 октября 2010\.<\/b>\s+&nbsp;([.\s\S]*)<\/span>\s+<p>|";
Всем спасибо за участие!

Добавлено через 2 минуты
Цитата Сообщение от romchiksoad Посмотреть сообщение
/<span>\s+<b>24 октября 2010\.<\/b>\s+(\s\m)+<\/span>/
Возвращает пустой массив:
PHP
1
2
3
4
5
6
7
8
array(2) {
  [0]=>
  array(0) {
  }
  [1]=>
  array(0) {
  }
}
0
25.10.2010, 08:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2010, 08:58

Спец символы в регулярном выражении
Парни подскажите такую вещь . Вот есть вражение 'arts/(+)/(+)'...

Проверка поля с паролем на регулярном выражении
Добрый вечер! У меня такая проблема при регистрации у меня пропускает скрипт...

Получить значения элементов в регулярном выражении
Уже несколько дней бьюсь над такой вот незамысловатой задачкой: Имеется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru