PHP.SU

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

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

> Найдено сообщений: 52
borus Отправлено: 28 Декабря, 2012 - 09:57:00 • Тема: Зачем использовать подряд *+ в шаблоне? • Форум: Регулярные выражения

Ответов: 3
Просмотров: 247
Здравствуйте.
Поясните, для чего используется сочетание "*+" в шаблоне:
CODE (text):
скопировать код в буфер обмена
  1. ~<tr\b[^<>]*+>\s*+<td\b[^<>]*+>[^<>]*+</td>\s*+<td\b[^<>]*+>(искомая фраза[^<>]*+)</td>\s*+</tr>~i

?
Насколько понимаю * и + оба - квантификаторы, но зачем они идут сразу друг за другом? Похоже на масло масленное
borus Отправлено: 27 Декабря, 2012 - 14:58:42 • Тема: Почему не подменяется текст, если регвыражение верно? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 325
Вот такое выражение помогло:
CODE (text):
скопировать код в буфер обмена
  1. /<tr(?!.+?<tr).+?искомая фраза.+?<\/tr>/is

но оно уже не действует на строке, содержащей html-код таблицы вида:
CODE (text):
скопировать код в буфер обмена
  1. <table>
  2. <tr>
  3. <td>1/1</td>
  4. <td>фраза</td>
  5. </tr>
  6. <tr>
  7. <td>2/2</td>
  8. <td>искомая фраза</td>
  9. </tr>
  10. <tr>
  11. <td>2/2</td>
  12. <td>еще одна строка</td>
  13. </tr>
  14. </table>

кто-нибудь скажет, почему?
borus Отправлено: 26 Декабря, 2012 - 14:55:31 • Тема: Почему не подменяется текст, если регвыражение верно? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 325
оказывается файл надо бы конвертировать в UTF-8 BOM. Однако...
теперь другая задача.
На странице создал пример, описывающий ситуацию: регвыражение захватывает текст начиная с первого появления символов <tr, начиная с первой строки таблицы.

Как должно выглядеть регвыражение, чтобы оно соответствовало только второй строке таблицы?

P.S. кто-нибудь подскажет как искать свои темы по другому нежели через личный email? Поиском по форуму я нашел лишь одну свою тему Улыбка
borus Отправлено: 24 Декабря, 2012 - 10:13:52 • Тема: Почему не подменяется текст, если регвыражение верно? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 325
armancho7777777 пишет:
Пока так сделал:
PHP:
скопировать код в буфер обмена
  1.  
  2. $s = preg_replace('/(?<=<\/tr>)\s*<tr.*?Конвертация данных.*?<\/tr>/is', '', $s);
  3. echo preg_replace('/\s*<tr.*?Конвертация данных.*?<\/tr>/is', '', $s);
  4.  

Что-то не получается у меня с условием сделать.
То есть спрва моет быть закрывающий tr, а может и не быть.

не работает.
Привожу весь работающий код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //header('Content-type:text/html;charset=utf-8');
  4.  
  5. /*Получение данных.*/
  6. function data($path,$host){
  7.     $fp = fsockopen($host, 80);
  8.     if (!$fp){die('ошибка');}
  9.     else{
  10.         $out = "GET $path HTTP/1.0\r\n";
  11.         $out .= "Accept: image/gif, application/xhtml+xml, */*\r\n";
  12.         $out .= "Accept-Language: ru\r\n";
  13.         $out .= "Host: $host\r\n";
  14.         //прикинемся оперой-мини
  15.         $out .= "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1716; ru; U; ssr)\r\n";
  16.         $out .= "Cache-Control: no-cache\r\n";
  17.         $out .= "Connection: Close\r\n\r\n";
  18.         fwrite($fp, $out);
  19.         $headers = "";
  20.         while ($str = trim(fgets($fp)))
  21.         $headers .= "$str\n";
  22.         $body = "";
  23.         while (!feof($fp))
  24.         $body .= fgets($fp);
  25.         fclose($fp);
  26.     }
  27.     return $body;
  28. }
  29.  
  30. $host='downloads.1c.ru';
  31. $path='/release_info/categ_js.jsp?GroupID=88';
  32.  
  33. //запуск
  34. $s=data($path,$host);
  35.  
  36. //обрабатываем (ВТОРОЙ ЭТАП)
  37. function process($s){
  38.         $s=mb_convert_encoding($s,'UTF-8','CP1251');
  39.         $s = preg_replace('/document\.write\(\'(.*?)\'\);/is', '$1', $s);
  40.         $s=stristr($s,'<table border="1" cellpadding="3" cellspacing="0" width="100%" class="content">');
  41.         $s = preg_replace('/\/\/\s\d{2,3}\s-->\s/is', '', $s);
  42.         $s = str_replace ('\\', '', $s);
  43.         $s = preg_replace('/(?<=<\/tr>)\s*<tr.*?Конвертация данных.*?<\/tr>/is', '', $s);
  44.         return $s;
  45. }
  46. $s=process($s);
  47. echo preg_replace('/\s*<tr.*?Конвертация данных.*?<\/tr>/is', '', $s);
  48. ?>
  49.  
borus Отправлено: 24 Декабря, 2012 - 08:47:59 • Тема: Почему не подменяется текст, если регвыражение верно? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 325
armancho7777777 пишет:
borus пишет:
В чем моя ошибка?

Не знаю.
У меня работает.

Видимо переменная $s имеет какую-то другую разметку.
Код html выводимой таблицы можно увидеть здесь - http://c-info[dot]ru/index.php?optio[dot][dot][dot]rticle&id=25
borus Отправлено: 24 Декабря, 2012 - 08:39:29 • Тема: Статья 'Введение в регулярные выражения. Синтаксис.' • Форум: Обсуждение статей

Ответов: 6
Просмотров: 2349
avtor.fox пишет:
borus

мне очень помог, когда я с регулярками знакомился.

здравствуйте. благодарю, воспользовался ссылкой, начал внедрять, что-то не то. Вы могли бы посмотреть?
borus Отправлено: 24 Декабря, 2012 - 08:15:34 • Тема: Почему не подменяется текст, если регвыражение верно? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 325
Здравствуйте.

Проверил на сайте регвыражение
но почему-то код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $s = preg_replace('/<tr.*?Конвертация данных.*?<\/tr>/is', '', $s);

не выполняется. $s содержит строку выводящую таблицу, в которой надо удалить строку со словосочетанием "Конвертация данных".
В чем моя ошибка?
borus Отправлено: 21 Декабря, 2012 - 13:56:50 • Тема: Как исправить шаблон? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 359
LShark пишет:
почему .+?
может лучше .*?

и так не работает Улыбка
borus Отправлено: 19 Декабря, 2012 - 15:35:52 • Тема: Как исправить шаблон? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 359
sKaa пишет:
borus, опишите нормально задачу.

этим кодом
CODE (htmlphp):
скопировать код в буфер обмена
  1. $p='/<tr.+?Конвертация данных.+?<\/tr>/';
  2. $s = preg_replace($p, '', $s);

пытаюсь поудалять строки из переменной $s, содержащей html код таблицы.
Типовой html-код строк таблицы, которые надо вырезать из переменной $s показан во вложении
borus Отправлено: 19 Декабря, 2012 - 15:17:48 • Тема: Как исправить шаблон? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 359
пытаюсь шаблоном '/<tr.+?Конвертация данных.+?<\/tr>/' удалить строку таблицы.
что-то не получается. Прошу помощи
borus Отправлено: 19 Декабря, 2012 - 13:55:42 • Тема: Как исправить шаблон? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 359
Вы же пишите
vlados пишет:
в случае ошибки возвращается NULL.

выходит не правильное регвыражение?
вот это сработало
'/\/\/\s\d{2,3}\s-->\s/is'
borus Отправлено: 19 Декабря, 2012 - 13:27:36 • Тема: Как исправить шаблон? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 359
vlados пишет:

выдает NULL
borus Отправлено: 19 Декабря, 2012 - 13:09:23 • Тема: Как исправить шаблон? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 359
Здравствуйте!
На странице работает следующий код грабера:
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. //header('Content-type:text/html;charset=utf-8');
  3.  
  4. /*Получение данных.*/
  5. function data($path,$host){
  6.     $fp = fsockopen($host, 80);
  7.     if (!$fp){die('ошибка');}
  8.     else{
  9.         $out = "GET $path HTTP/1.0\r\n";
  10.         $out .= "Accept: image/gif, application/xhtml+xml, */*\r\n";
  11.         $out .= "Accept-Language: ru\r\n";
  12.         $out .= "Host: $host\r\n";
  13.         //прикинемся оперой-мини
  14.         $out .= "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1716; ru; U; ssr)\r\n";
  15.         $out .= "Cache-Control: no-cache\r\n";
  16.         $out .= "Connection: Close\r\n\r\n";
  17.         fwrite($fp, $out);
  18.         $headers = "";
  19.         while ($str = trim(fgets($fp)))
  20.         $headers .= "$str\n";
  21.         $body = "";
  22.         while (!feof($fp))
  23.         $body .= fgets($fp);
  24.         fclose($fp);
  25.     }
  26.     return $body;
  27. }
  28.  
  29. $host='downloads.1c.ru';
  30. $path='/release_info/categ_js.jsp?GroupID=88';
  31. //запуск
  32. $s=data($path,$host);
  33. //обрабатываем (ВТОРОЙ ЭТАП)
  34. function process($s){
  35.         $s=mb_convert_encoding($s,'UTF-8','CP1251');
  36.         $s = preg_replace('/document\.write\(\'(.*?)\'\);/is', '$1', $s);
  37.         $s=stristr($s,'<table border="1" cellpadding="3" cellspacing="0" width="100%" class="content">');
  38. //      $s = preg_replace('/\s////\s\d{2,3}\s-->\s/is', '', $s); // ! Это не работает !
  39.         return $s;
  40. }
  41. $s=process($s);
  42.  
  43. //выдаем результат (ТРЕТИЙ ЭТАП)
  44. echo 'here is "var_dump(htmlspecialchars(var_export($s, TRUE)));" output:<br/><br/>';
  45. var_dump(htmlspecialchars(var_export($s, TRUE)));
  46. echo "<br/><br/><br/>";
  47. echo 'And here is "echo $s;" output:<br/><br/>';
  48. echo $s;
  49. ?>

Пытался удалить группы символов типа " // 121 --> " (пробелы в начале и конце) с помощью команды
CODE (text):
скопировать код в буфер обмена
  1. $s = preg_replace('/\s////\s\d{2,3}\s-->\s/is', '', $s);

работает не так как ожидал, если раскоментить эту строку.

Скажите, в чем шаблон '/\s////\s\d{2,3}\s-->\s/is' неправилен?
borus Отправлено: 17 Декабря, 2012 - 19:25:47 • Тема: Отключить сглаживание шрифтов в FF средствами PHP • Форум: Вопросы новичков

Ответов: 1
Просмотров: 109
Здравствуйте.

В FireFox применяется сглаживание шрифтов, отсюда отличное от других браузеров отображение текста(по крайней мере для Verdana bold). Прочитал, что в конфиге FF для это надо изменить настройку gfx.content.azure.enabled в false, но это делается руками через настройки. Есть ли возможность повлиять на эту настройку средствами PHP?
borus Отправлено: 11 Декабря, 2012 - 14:01:37 • Тема: Статья 'Введение в регулярные выражения. Синтаксис.' • Форум: Обсуждение статей

Ответов: 6
Просмотров: 2349
avtor.fox пишет:
borus если это был сарказм, то я начну интересоваться Вашим веб-дизайном Улыбка

просто я впервые познакомился с регвырами по данной статье, много информации. В который раз я знаю, что ничего не знаю, и сколько еще предстоит узнать ... Улыбка

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB