PHP.SU

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

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

> Найдено сообщений: 12
facece Отправлено: 09 Февраля, 2018 - 22:03:03 • Тема: Долго грузит страница. • Форум: Вопросы новичков

Ответов: 1
Просмотров: 118
Может ли из-за того что большой код, огромное количество запросов долго загружать страницу? И не успевать всё обработать?
facece Отправлено: 08 Февраля, 2018 - 20:52:30 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
Да входная строка может изменяться. Вот только я не понял как в первой получать всё, что прописано между html тегами, а во второй уже получать группы чисел.
Можно пример? Ато у меня с регулярками проблемма
facece Отправлено: 08 Февраля, 2018 - 19:03:29 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
Чёт не работает. Подскажите ещё пожалуйста как мне разбить вот эту строку
<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] "; ?>

Но портят всё скобки из-за них код не срабатывает. А без скобок всё ок.
facece Отправлено: 06 Февраля, 2018 - 08:55:27 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
Спасибо очень помог!!! А ещё такой вопрос есть код<h2>7-5 6-2 6-4</h2> как мне найти знак '-' и посчитать сколько нашло этих знаков?
facece Отправлено: 05 Февраля, 2018 - 18:48:58 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
Выдало ошибку
Parse error: syntax error, unexpected '[' in Z:\home\test1.ru\www\tenis\1.php
на эту строку $arr = empty($arr[1]) ? [] : $arr[1] ;
facece Отправлено: 04 Февраля, 2018 - 19:27:42 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
Строитель пишет:
facece пишет:
Все ок выводит цифру 4
Ошибаетесь - первый вариант тоже выводит <td>4</td>. Что бы в этом убедиться, откройте в браузере исходный код вашей html-страницы.
(Добавление)
facece, попробуйте такой вариант:
Спойлер (Отобразить)
Если не подойдёт, подправлю на глобальный поиск, и допишу теги.

А если подойдёт, то для подобных задач и регулярки не нужны, т.к. можно просто вырезать теги из исходной строки с помощью strip_tags().

Да всё вышло. Всё правильно. Но я задумал не так. Я неправильно задумал весь код.
Вообщем я делаю парсер. И мне нужно выдрать некоторые значения. Но заметил я что на каждой странице структура исходника может немного поменяться, и поэтому уже парсер берёт не те значения. А так регулярка правильно работает...
(Добавление)
Вообщем вот кусок исходника
Спойлер (Отобразить)


На этой странице например есть такой код
<td>4</td>
<td class="type">эйсы</td>
<td>4</td>
</tr>
<tr>
<td>2</td>
<td class="type">двойные ошибки</td>
<td>1</td>
</tr>
А например здесь уже по другому
Спойлер (Отобразить)

Здесь к примеру нет
<td>4</td>
<td class="type">эйсы</td>
<td>4</td>
Я думал что оно везде одинаковая структура и поэтому перебирал так
PHP:
скопировать код в буфер обмена
  1. preg_match_all('~<td>\d+~', $text1, $arr);
  2. $arr[0][0];$arr[0][1];

А теперь я понял что нужно искать но не понимаю как это воплотить в регулярке
Нужно искать например <td class="type">эйсы</td> а от него вытягивать число что перед ним и число что после него. Вот только как?
facece Отправлено: 04 Февраля, 2018 - 17:26:09 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
Ещё такой вопрос есть такой код <td>4</td> мне нужна только цифра.
Делаю так
PHP:
скопировать код в буфер обмена
  1.  
  2. preg_match_all('/<td>[0-9]<\\/td>/', $text1, $err1);
  3. $e0=$err1[0][0];
  4. echo $e0;
  5.  

Все ок выводит цифру 4. А если делаю так
PHP:
скопировать код в буфер обмена
  1.  
  2. <?preg_match_all('/<td>[0-9]<\\/td>/', $text1, $err1);
  3. $e0=$err1[0][0];?>
  4. <td><input name="1a" size="4" maxlength="32" value="<? echo $e0 ?>" type="text" /></td>
  5.  

Вводит полностью код <td>4</td> что не так?
facece Отправлено: 03 Февраля, 2018 - 12:49:43 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
спасибо
facece Отправлено: 03 Февраля, 2018 - 11:17:11 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
Оно то массив выдало но мне нужно так чтоб например в $1 записались число 71 в $2 число 75 в $3 число 72 без слов array и т.д
Не могу понять как это сделать
(Добавление)
делаю так
PHP:
скопировать код в буфер обмена
  1. <?$text = file_get_contents( 'http://www.gotennis.ru/players/compare_game/ATP/14705/33648/23142/0/' );
  2. preg_match_all('~(?<=\()\d+(?=%\))~', $text, $arr);
  3. var_dump($arr[0]);
  4.  

Выдало так
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(10) { [0]=> string(2) "71" [1]=> string(2) "75" [2]=> string(2) "72" [3]=> string(2) "60" [4]=> string(2) "53" [5]=> string(2) "60" [6]=> string(2) "38" [7]=> string(2) "31" [8]=> string(2) "38" [9]=> string(2) "33" }

А нужно чтоб было так например

PHP:
скопировать код в буфер обмена
  1. echo $arr[0];// Надо чтоб выдало 71
  2. echo $arr[1];// Надо чтоб выдало 75
  3. echo $arr[5];// Надо чтоб выдало 60
  4.  
facece Отправлено: 03 Февраля, 2018 - 00:28:24 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
оно то получилось только не совсем так. Теперь выводит так Array ([0] => 71 [1] => 75 [2] => 72)
facece Отправлено: 02 Февраля, 2018 - 19:30:08 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
А ещё такой вопрос функция preg_match находит только первое совпадение. А мне нужно найти все совпадения. Записать их в массив и чтоб их можно было перебирать.
facece Отправлено: 02 Февраля, 2018 - 13:57:36 • Тема: помогите с регуляркой • Форум: Регулярные выражения

Ответов: 22
Просмотров: 1413
Помогите пожалуйста есть такой код
<td>27 из 45 (60%)</td>

мне нужно вытянуть число между скобок. Как это сделать?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB