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 5.2

 PHP.SU

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


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

> Описание: не отрабатывает регулярное выражение preg_match ()
classic1698
Отправлено: 11 Апреля, 2017 - 13:46:06
Post Id


Новичок


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


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




Здравствуйте друзья!

Задача банально и проста. В переменной могут содержаться или цифры не начинающийся с нуля или цифры и знаки без пробелов. Например: 130356634 или OwHDEK_SPQ4.

такой код работал на тестовом хостинге без проблем с php 5.6
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?if(preg_match('|^[1-9][0-9]{5,8}$|', $var):?>
  3. <div class="repertuar_a" style="background-image:url('<?=$var" id="<?=$var?>"></div>
  4. <?else:?>
  5. <div class="repertuar_b" id="<?=$var?>"></div>
  6. <?endif;?>
  7.  

А вот на рабочем не работает.
Но как понял на рабочем стоит php 5.2, и этот код не отрабатывает это условие.
Пробовал различные условия и ~\d+~ и /[0-9]/i
Что делать уже я не понимаю. Учитывая что версию php 5.2 я совсем не знаю. Помогите пожалуйста кто в курсе.

(Отредактировано автором: 11 Апреля, 2017 - 13:57:21)

 
 Top
Мелкий Супермодератор
Отправлено: 11 Апреля, 2017 - 14:15:43
Post Id



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


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


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




classic1698 пишет:
работал на тестовом хостинге без проблем с php 5.6

classic1698 пишет:
'|^[1-9][0-9]{5,8}$|

classic1698 пишет:
или цифры и знаки без пробелов

Одна из трёх приведённых цитат - ложь.


-----
PostgreSQL DBA
 
 Top
classic1698
Отправлено: 11 Апреля, 2017 - 14:33:43
Post Id


Новичок


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


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




[quote=Мелкий][/quote]
Лихо завернул.
Если вы чего-то в жизни не видели, это не значит, что этого не существует!

А если серьёзно то все три "цитаты" как Вы выразились не просто правда а истина - могу показать... до сих пор работает на 5.6. )))

Но хотелось бы конструктивного подхода.
 
 Top
Мелкий Супермодератор
Отправлено: 11 Апреля, 2017 - 15:03:46
Post Id



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


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


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




Если регулярка |^[1-9][0-9]{5,8}$| совпадает со строкой OwHDEK_SPQ4 - значит сломаны все регулярки основанные на libpcre. А они ооочень много где живут.

Показывайте:

Когда увидите в ответ "int(0)" - проверяйте все 3 приведённые цитаты. Как минимум одна из них - ложь.
Ну разве только вы прямой правкой исходника PHP или runkit'ом или ещё чем зачем-то заменили реализацию preg_match на что-то сломанное. Ну так это не проблема PHP, и уж явно не разница версий. Такая простая регулярка ведёт себя идентично на всех версиях 4.4-7.1 что у меня под рукой. И должна вообще на всех, т.к. регулярка простейшая и такую грубую ошибку libpcre явно заметили бы за два десятка лет.


-----
PostgreSQL DBA
 
 Top
classic1698
Отправлено: 11 Апреля, 2017 - 16:40:50
Post Id


Новичок


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


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




[quote=Мелкий]Если регулярка |^[1-9][0-9]{5,8}$| совпадает со строкой OwHDEK_SPQ4 - значит сломаны все регулярки основанные на libpcre. А они ооочень много где живут.

Показывайте:

Когда увидите в ответ "int(0)" - проверяйте все 3 приведённые цитаты. Как минимум одна из них - ложь.
Ну разве только вы прямой правкой исходника PHP или runkit'ом или ещё чем зачем-то заменили реализацию preg_match на что-то сломанное. Ну так это не проблема PHP, и уж явно не разница версий. Такая простая регулярка ведёт себя идентично на всех версиях 4.4-7.1 что у меня под рукой. И должна вообще на всех, т.к. регулярка простейшая и такую грубую ошибку libpcre явно заметили бы за два десятка лет.[/quote]

Ну ломать то я точно ничего не ломал. Ума у меня не хватит ))))
А по существу - это старый Битрекс версия 11.
Я таким образом на нём разделяю вывод видео с youtube или vimeo по id.
Может конечно и бестолковое решение но то что пришло быстро в голову.
Так как у vimeo в id входят только цифры то и выбор по ним логичней сделать.
И весь контент, конечно же один и тот же, и на тесте и в рабочем. Почему и подумал про версии.
Но "регулярка" тупо выводит только youtube хотя он второй в условии. Но одна цифирь у него есть. Вот я говорю, что пока в недоумении.
Проверял вместе с кодом id ничего не выводит, только цифры и код (если подозревать, что кусок html выводит - например: <div>код</div> или <p>код</p>).
(Добавление)
[quote=classic1698]
Мелкий пишет:

CODE (htmlphp):
скопировать код в буфер обмена
  1. var_dump(preg_match('|^[1-9][0-9]{5,8}$|', 'OwHDEK_SPQ4'));


Когда увидите в ответ "int(0)" - проверяйте все 3 приведённые цитаты. Как минимум одна из них - ложь.


Ну да проверил. Выдаёт именно "int(0)"!
Перерывать хужой старый движок конечно не буду.
Нашёл другое решение выводить по полной ссылки обрезать до id.
С Youtube это не проблема а вот с Vimeo придётся повозиться.
Спасибо за вариант проверки.
 
 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