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 :: помогите с регуляркой [2]

 PHP.SU

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


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

> Без описания
Sail
Отправлено: 05 Февраля, 2018 - 19:42:35
Post Id



Участник


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


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




facece пишет:
Выдало ошибку
Parse error: syntax error, unexpected '[' in Z:\home\test1.ru\www\tenis\1.php
на эту строку $arr = empty($arr[1]) ? [] : $arr[1] ;

Обновите версию php, либо ознакомьтесь: массивы.
 
 Top
Строитель Модератор
Отправлено: 05 Февраля, 2018 - 19:47:08
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




facece пишет:
Выдало ошибку
Parse error: syntax error, unexpected '[' in Z:\home\test1.ru\www\tenis\1.php
на эту строку $arr = empty($arr[1]) ? [] : $arr[1] ;
Потому что версия вашего PHP ниже версии 5.4.

Надо поднять версию PHP хотя бы до 5.4, ну или заменить сокращённые объявления массивов:
Спойлер (Отобразить)

(Добавление)
Sail опередил Закатив глазки
 
 Top
facece
Отправлено: 06 Февраля, 2018 - 08:55:27
Post Id


Новичок


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


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




Спасибо очень помог!!! А ещё такой вопрос есть код<h2>7-5 6-2 6-4</h2> как мне найти знак '-' и посчитать сколько нашло этих знаков?
 
 Top
Строитель Модератор
Отправлено: 06 Февраля, 2018 - 09:35:31
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




facece, написал "на коленке" Пример
 
 Top
facece
Отправлено: 08 Февраля, 2018 - 19:03:29
Post Id


Новичок


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


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




Чёт не работает. Подскажите ещё пожалуйста как мне разбить вот эту строку
<h2>6-3 6-7(3) 6-4</h2>
Мне нужно чтоб получилось например так
$arr[0][0]; //Выводило 6
$arr[0][1]; //Выводило 3
$arr[0][2]; //Выводило 6
$arr[0][3]; //Выводило 7 и то что в скобках и сами скобки нужно удалить
$arr[0][4]; //Выводило 6
$arr[0][5]; //Выводило 4
Как такое сделать?
Пробовал так
$str='<h2>6-3 6-7(3) 6-4</h2>';
preg_match_all('/<h2>(.*?)<\\/h2>/is' , $str, $arr);
print_r($arr[0]); //выводит 6-3 6-7(3) 6-4
(Добавление)
Впринципе можно было б и так
PHP:
скопировать код в буфер обмена
  1.  
  2. <? $str='<h2>6-3 6-7 6-4</h2>';
  3. preg_match_all('/<h2>(.*?)<\\/h2>/is' , $str, $arr);
  4. $str = print_r($arr[0]); // к примеру
  5. $re = '{
  6.  ^\s*(                  # начало строки
  7.    (\d+)                  # число
  8.      \s* [[:punct:]] \s*  # разделитель
  9.    (\d+)                  # число
  10.       \s*  # пробел
  11.    (\d+)                  # число
  12.         \s* [[:punct:]] \s*  # разделитель
  13.           (\d+)                  # число
  14.            \s*  # пробел
  15.    (\d+)                  # число
  16.         \s* [[:punct:]] \s*  # разделитель
  17.           (\d+)                  # число
  18.  )\s*$                  # конец строки
  19. }xs';
  20. // Разбиваем строку на куски при помощи preg_match().
  21. preg_match($re, $str, $pockets);
  22. // Теперь разбираемся с карманами.
  23.  
  24. echo " $pockets[2] ";
  25. echo " $pockets[3] ";
  26. echo " $pockets[4] ";
  27. echo " $pockets[5] ";
  28. echo " $pockets[6] ";
  29. echo " $pockets[7] "; ?>

Но портят всё скобки из-за них код не срабатывает. А без скобок всё ок.

(Отредактировано автором: 08 Февраля, 2018 - 19:05:03)

 
 Top
Строитель Модератор
Отправлено: 08 Февраля, 2018 - 20:30:51
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




facece пишет:
Мне нужно чтоб получилось например так
$arr[0][0]; //Выводило 6
$arr[0][1]; //Выводило 3
$arr[0][2]; //Выводило 6
$arr[0][3]; //Выводило 7 и то что в скобках и сами скобки нужно удалить
$arr[0][4]; //Выводило 6
$arr[0][5]; //Выводило 4
Как такое сделать?
Если формат строки не меняется, т.е. он всегда такого вида: <h2>6-3 6-7(3) 6-4</h2>, то можно каждое число записать в круглые скобки, и тогда в результирующем массиве числа будут храниться по отдельности. При обходе полученного массива в цикле, первый элемент массива будет содержать полное вхождение подстроки, и т.к. вся подстрока не нужна, то первый элемент в цикле пропускается (для этого там прописано условие), а остальные элементы собираются в новый массив:
Спойлер (Отобразить)

Но если входная строка изменится, то вся эта конструкция не сработает, поэтому я бы предпочёл использование двух регулярок - в первой получать всё, что прописано между html тегами, а во второй уже получать группы чисел.

facece пишет:
Чёт не работает
Там есть кнопка "Execute code", и при нажатии на неё всё прекрасно отрабатывает Радость Скорее всего вы просто не корректно скопировали тот пример.
 
 Top
facece
Отправлено: 08 Февраля, 2018 - 20:52:30
Post Id


Новичок


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


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




Да входная строка может изменяться. Вот только я не понял как в первой получать всё, что прописано между html тегами, а во второй уже получать группы чисел.
Можно пример? Ато у меня с регулярками проблемма
 
 Top
Строитель Модератор
Отправлено: 08 Февраля, 2018 - 20:58:17
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




facece, с учётом того, что строка может изменяться, я бы сделал так:
Спойлер (Отобразить)
facece пишет:
Вот только я не понял как в первой получать всё, что прописано между html тегами
Ну вот в этом примере, после первого вызова preg_match() в нулевом индексе массива $arr будет храниться вся строка (вместе с тегами)
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB