Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

Rendom



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Учебники регулярных выражений
 
Кто сможет составить выражение для такого случая:

Код:
 
<table border=0>
<tr>
   <td>blablablabla<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table></td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Нужно удалить из этого всего кусок "<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table>". Иными словами нужно вырезать текст от "<table" до "</table>" внутри которого есть строка "UNIQTEXT", но при этом не удалить лишнего. В результате должно получиться:

Код:
 
<table border=0>
<tr>
   <td>blablablabla</td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Всего записей: 115 | Зарегистр. 27-10-2002 | Отправлено: 23:26 17-05-2005 | Исправлено: AZJIO, 04:05 09-12-2014
UoRlAk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
неповеришь
пробовал
но в итоге имеем все тоже самое
 
http://i072.radikal.ru/1007/6a/5f5b16c21e8d.png

Всего записей: 99 | Зарегистр. 27-12-2007 | Отправлено: 23:43 06-07-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UoRlAk

Цитата:
но в итоге имеем все тоже самое

ну, а посмотреть какой путь к картинке получается и показать тут?


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:46 06-07-2010
UoRlAk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
исходный код страници на котороую должно выводится изображение (моей спарсеной страници):
 
<tbody>
<tr><td height="20">В небе: </td><td><img src="http://img.yandex.net/i/" align="left">   Переменная облачность</td></tr>
<tr><td style="padding-right: 5px;" height="20">Температура: </td><td> <font color="#ff0000"><b>+22°</b></font></td></tr>
</tbody>
 

Всего записей: 99 | Зарегистр. 27-12-2007 | Отправлено: 23:50 06-07-2010 | Исправлено: UoRlAk, 23:58 06-07-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UoRlAk
значит вы привели неправильный изначальный код страницы для парсинга.. или неправильно использовали $kartinka
покажите как вставили этот кусок, что я привел выше


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:03 07-07-2010
UoRlAk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
 
страница парсинга: http://pogoda.yandex.ru/33846/
 
вверху
 
вставил как Вы и написали
 
кажетса понял в чем проблема вместо  
preg_match("#weather/i/icons/(.*?)\"#i",$text,$matches);
$kartinka=$matches[1];
 
надо так  
 
preg_match("#weather/i/icons/(.*?)\"#i",$contents,$matches);
$kartinka=$matches[1];
 
щас проверю

Всего записей: 99 | Зарегистр. 27-12-2007 | Отправлено: 00:20 07-07-2010 | Исправлено: UoRlAk, 02:34 07-07-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UoRlAk

Цитата:
надо так  

конечно же.. ну неужели остальные должны такие мелочи за вас додумывать?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:31 07-07-2010
virtuNBK



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день форумчане
нужна помощь, с регуляркой.
есть текст строками вида

Код:
 
{"blocks":[{"id":"35744","data":[{"x":1441,"y":1784,"objects":[{"id":"3458427","type":13,"tooltip":[{"key":"v1","value":"gandalf04"},{"key":"v2","value":1},{"key":"v4","value":13480}],"actions":[2,6,5,4]}]},[{"x":1465,"y":1810,"objects":[{"id":"3464790","type":16,"tooltip":[{"key":"v1","value":"romomo"},{"key":"v2","value":3536},{"key":"v3","value":"ss_waffen"},{"key":"v4","value":13832}],"actions":[2,6,5,4]}]},"reload":[{"block":102,"timeout":60}]}
 

 
необходимо из подобных строк сделать выборку
из куска x":1441, вытянуть 1441
из куска "y":1784 вытянуть 1784
"key":"v1","value":"gandalf04"} вытянуть gandalf04
из куска {"key":"v2","value":1} вытянуть 1
из куска  {"key":"v3","value":"ss_waffen"} вытянуть ss_waffen (часто данный кусок отсутствует)
из куска {"key":"v4","value":13832} вытянуть 13832
и запихнуть все в мускуль таблицу (эт уже просто)
в строке может быть n записей которые в таблицу должны попасть в отдельные строки.
отделить одну запись от другой можно так
всегда начинаються с  
{"x":  
и заканчиваються первой  
"actions":
 
если я все правильно представляю напрямую регуляркой подобного не получиться, т.е. сначало нужно разбить построчно что бы получилось что-то типа

Код:
 
{"x":1441,"y":1784,"objects":[{"id":"3458427","type":13,"tooltip":[{"key":"v1","value":"gandalf04"},{"key":"v2","value":1},{"key":"v4","value":13480}],"actions"
{"x":1465,"y":1810,"objects":[{"id":"3464790","type":16,"tooltip":[{"key":"v1","value":"romomo"},{"key":"v2","value":3536},{"key":"v3","value":"ss_waffen"},{"key":"v4","value":13832}],"actions"
 

потом уже парсить результат и вставлять в таблицу...
проблема в том что регуляркой у меня получается вытянуть только значения "x" больше ничего не получилось стянуть (с регулярными проблемы)
 
прошу помощи.

Всего записей: 16 | Зарегистр. 07-06-2007 | Отправлено: 16:11 07-07-2010
exhugo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, помогите пожалуйста решить задачку.
 
Дано:
Имеем блок текста где могут встречаться теги "a" с произвольными атрибутами.  
 
Ожидается:
Нужно получить текст, где у каждого тега "a" проставлен аттрибут target="_blank" (если этого аттрибута небыло разумеется)
 
Спасибо каждому, кто найдет немного времени мне помочь.
Всем хорошего дня!
 
P.S. PHP

Всего записей: 92 | Зарегистр. 04-02-2008 | Отправлено: 19:01 13-07-2010 | Исправлено: exhugo, 19:04 13-07-2010
kolunya

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день. Я зашёл в небольшой тупик. Почему-то не работает реглярное выражение в моём php скрипте.
необходимо распарсить такой блок текста и вытащить из него только цифры. Т.е. в итоге в примере должно получится: 6498503
 

Код:
 
 <div id="searchSummary" class="summary">
  Найдено 6<span style="font-size:60%"> </span>498<span style="font-size:60%"> </span>503 группы (выводятся 1-10)<span class='divider'>|</span><a href='gsearch.php?from=events' style='font-weight:normal'>к событиям</a>
 </div>
 

 
Вот код, который написал. Но он не работает. Подскажите где косяк
вышеприведённый блок текста в переменной $html

Код:
preg_match_all("*Найдено\s(.*)\sгруп/iu",$html,$group_num);
$num=strip_tags($group_num[0]);
echo $num;

Всего записей: 9 | Зарегистр. 06-03-2006 | Отправлено: 10:41 14-07-2010
kivan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kolunya

Код:
 
$html = strip_tags($html);
preg_match('/Найдено([\s*|\d+]+)груп/i', $html, $group_num);
$result = preg_replace('/\s/', '', $group_num[1]);
print $result;
 


----------
There are 10 kinds of people in the World...
Those who understand binary, and those who dont!

Всего записей: 341 | Зарегистр. 23-11-2004 | Отправлено: 16:23 15-07-2010
exhugo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мой пост немного выше - не актуален: решилось с помощью DOMDocument.
Ну а вообще составлять регулярные выражения нужно конечно учиться

Всего записей: 92 | Зарегистр. 04-02-2008 | Отправлено: 11:41 16-07-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, помогите составить регулярное выражение.
Есть слова к примеру: Киев, арбуз, черепица, Шапка.  
Надо что бы разрешались только русские буквы. Не чувствительные к регистру. Если есть левые буквы или символы, говорила что нельзя такие символы использовать.

----------
Абонентское обслуживание и ремонт компьютеров в Днепропетровске

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 17:57 24-07-2010 | Исправлено: DarkSmoke, 17:59 24-07-2010
kamdolina

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как мне из повторяющегося html-кода вида:
 
.............................................................................................................................
куча ненужного кода
........
 
 <h1><a style="margin: 0px; font-size: 18px; color:#5CA3BA; text-decoration: underline;" href="http://www.xa-xa.org/2010/07/24/podvodnye-peshhery-na-bagamakh.html">Подводные пещеры на Багамах</a>21 фото</h1>
     
........
куча ненужного кода
........
 
<img src="http://www.xa-xa.org/uploads/posts/2010-07/thumbs/1279948917_underwater_caves_23.jpg" style="border: none;" alt='Подводные пещеры на Багамах' title='Подводные пещеры на Багамах'  />
 
........
куча ненужного кода
............................................................................................................................
 
вырезать содержимое ссылки на пост:
http://www.xa-xa.org/2010/07/24/podvodnye-peshhery-na-bagamakh.html
(принцип шаблона - содержимое ссылки href=""  внутри тега <h1></h1>)
 
название поста:
Подводные пещеры на Багамах
(принцип шаблона - содержимое текста между тегами <a></a>, находящегося внутри тега <h1></h1> )
 
путь картинки к посту:
http://www.xa-xa.org/uploads/posts/2010-07/thumbs/1279948917_underwater_caves_23.jpg
(принцип шаблона - путь к картинке, находящейся в src=""  внутри тега, начинающегося на <img src="http://www.xa-xa.org/...." ......>)
 
При условии, что в этом коде таких постов будет много(только все с разными темами).                     

Всего записей: 1 | Зарегистр. 24-07-2010 | Отправлено: 18:03 24-07-2010
KYjIXaKEP



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ помогите, пожалуйста.
Есть код

Код:
 
//$keyword - Любое слово или словосочетание!  
//$text - любой текст, в котором может быть $keyword или не быть
$replace='ЗАМЕНА ПРОШЛА';
$regEx = '\'(?!((<.*?)|(<a.*?)))(\b'. $keyword . '\b)(?!(([^<>]*?)>)|([^>]*?</a>))\'si';
$text = preg_replace($regEx,$replace,$text);
 

 
Этот код хорошо работает на локалхосте, на хостинге отказывается работать, но если заменить

Код:
 
$regEx = '\'(?!((<.*?)|(<a.*?)))('. $keyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'si';
 

То все начинает работать. Как посоветуете отличить слово?

Всего записей: 131 | Зарегистр. 18-07-2005 | Отправлено: 13:31 28-07-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KYjIXaKEP
локаль выставляем?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:09 28-07-2010
KYjIXaKEP



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В общем вот весь код.  

Код:
header('Content-type: text/html; charset=UTF-8');
mb_internal_encoding('UTF-8'); // Устанавливаем кодировку строк
echo "setlocale(LC_ALL, 'ru_RU.UTF-8')=" . setlocale(LC_ALL, 'ru_RU.UTF-8', 'ru_RU.utf8' ). "<br>";
echo "setlocale(LC_ALL, 0)=" . setlocale(LC_ALL, 0). "<br>";
echo "setlocale(LC_COLLATE, 0)=" . setlocale(LC_COLLATE, 0). "<br>";
echo "setlocale(LC_CTYPE, 0)=" . setlocale(LC_CTYPE, 0). "<br>";
echo "setlocale(LC_MONETARY, 0)=" . setlocale(LC_MONETARY, 0). "<br>";
echo "setlocale(LC_NUMERIC, 0)=" . setlocale(LC_NUMERIC, 0). "<br>";
echo "setlocale(LC_TIME, 0)=" . setlocale(LC_TIME, 0). "<br>";
 
$text=nl2br(file_get_contents('intext.txt')); //файл сохранен в UTF8
 
$keywords='надо|http://chizhekov.ru/
конец|http://ngs.ru/
';//ANSI !!! т.к. файл с кодом в анси сохранен
$keywords = (iconv('cp1251', 'utf-8', $keywords)) ? iconv('cp1251', 'utf-8', $keywords) : $keywords ; //переводим в УТФ
 
echo iconv('cp1251', 'utf-8' ,"ДО:------------------<br>").$text.iconv('cp1251', 'utf-8' ,"<br>------------------ПОСЛЕ \b:------------------<br>");
 
$keys=explode("\n", $keywords);
foreach ($keys as $key)    {
    $pat='/([\w\W]*?)\|([\w\W]*)/';
    if(preg_match_all($pat,$key,$matches,PREG_SET_ORDER)){
        foreach ($matches as $match) {
            $keyword=trim($match[1]);
            $link=trim($match[2]);
            $replace=' <a href="'.$link.'" target="_blank" title="'.$keyword.'">'.$keyword.'</a> ';
            $regEx = "#(?!((<.*?)|(<a.*?)))(\b". $keyword . "\b)(?!(([^<>]*?)>)|([^>]*?</a>))#si";
            $regEx2 = "#(?!((<.*?)|(<a.*?)))(\W". $keyword . "\W)(?!(([^<>]*?)>)|([^>]*?</a>))#si";
            $text2 = $text;
            $text = preg_replace($regEx,$replace,$text);
            $text2 = preg_replace($regEx2,$replace,$text2);
        }
    }
}
echo ($text);  
echo iconv('cp1251', 'utf-8' ,"<br>------------------ПОСЛЕ \W:------------------<br>") . $text2;
 

Результат работы его отображен тут
PS: кодировка UTF-8 установлена.  
Почему то не хочет корректно работать ни с тем ни с другим параметром (эт я про \b & \W)

Всего записей: 131 | Зарегистр. 18-07-2005 | Отправлено: 22:03 29-07-2010
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть таблица
Код:
<table>
            <tr>
                <td><span class="name">Страна:</span></td>
                <td><b><span class="gen"><font size="2">Россия</font></span></b></td>
            </tr>
            <tr>
                <td><span class="name">Регион:</span></td>
                <td class="row1"><b><span class="gen"><font size="2">Республика Адыгея (Адыгея)</font></span></b></td>
            </tr>
...
        </table>
подскажите за что зацепится, таблица вертикальная, все классы одинаковое.

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 08:17 30-07-2010
DrakonHaSh



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите как достать из текста строки вида
xxx=blalbla; или вместо ; перевод строки или конец текста
 
пробовал
if (preg_match("/xxx=(.*)(;|\n)/",$text,$match))
и [;\n] и [;$] - нифига не получается
 
 
ps кстати прикололо что на http://www.php.net/manual/en/function.preg-match.php вообще никакого описания формата регулярных выражений нет. вообще никак не описано как надо строить первый аргумент функции. жесть

Всего записей: 2078 | Зарегистр. 08-01-2008 | Отправлено: 15:16 11-08-2010 | Исправлено: DrakonHaSh, 15:35 11-08-2010
LeVaToS



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а как регуляркой в php удалить всё что находится в скобках, вместе со скобками? не подскажите случаем.
 
Добавлено:
все, нашёл решение:
preg_replace("#(.*?)\(.*?\)(.*?)#is", "\\1\\3", $track[1]);

Всего записей: 30 | Зарегистр. 10-04-2006 | Отправлено: 11:11 12-09-2010
volod3000



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
$pat='/([\w\W]*?)\|([\w\W]*)/';

 
 
не пропускает кириллицу .
 
Как исправить ?
 
Полный код файла

Всего записей: 134 | Зарегистр. 03-04-2007 | Отправлено: 07:52 10-10-2010 | Исправлено: volod3000, 01:57 11-10-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru