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
Форумы портала PHP.SU :: Версия для печати :: регулярное выражение на php 5.2
Форумы портала PHP.SU » » Вопросы новичков » регулярное выражение на php 5.2

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

1. classic1698 - 11 Апреля, 2017 - 13:46:06 - перейти к сообщению
Здравствуйте друзья!

Задача банально и проста. В переменной могут содержаться или цифры не начинающийся с нуля или цифры и знаки без пробелов. Например: 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 я совсем не знаю. Помогите пожалуйста кто в курсе.
2. Мелкий - 11 Апреля, 2017 - 14:15:43 - перейти к сообщению
classic1698 пишет:
работал на тестовом хостинге без проблем с php 5.6

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

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

Одна из трёх приведённых цитат - ложь.
3. classic1698 - 11 Апреля, 2017 - 14:33:43 - перейти к сообщению
[quote=Мелкий][/quote]
Лихо завернул.
Если вы чего-то в жизни не видели, это не значит, что этого не существует!

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

Но хотелось бы конструктивного подхода.
4. Мелкий - 11 Апреля, 2017 - 15:03:46 - перейти к сообщению
Если регулярка |^[1-9][0-9]{5,8}$| совпадает со строкой OwHDEK_SPQ4 - значит сломаны все регулярки основанные на libpcre. А они ооочень много где живут.

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

Когда увидите в ответ "int(0)" - проверяйте все 3 приведённые цитаты. Как минимум одна из них - ложь.
Ну разве только вы прямой правкой исходника PHP или runkit'ом или ещё чем зачем-то заменили реализацию preg_match на что-то сломанное. Ну так это не проблема PHP, и уж явно не разница версий. Такая простая регулярка ведёт себя идентично на всех версиях 4.4-7.1 что у меня под рукой. И должна вообще на всех, т.к. регулярка простейшая и такую грубую ошибку libpcre явно заметили бы за два десятка лет.
5. classic1698 - 11 Апреля, 2017 - 16:40:50 - перейти к сообщению
[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 придётся повозиться.
Спасибо за вариант проверки.

 

Powered by ExBB FM 1.0 RC1