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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
andead



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

Код:
#В ролях: .*<br />(.+)#

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 15:25 09-10-2009
mitiy

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

Цитата:
подскажите плиз. заменяю при выводе страницы втречающиеся в глоссарии термины на  
<a href="url">термин</a> , но если в тексте встречаются ссылки и названии ссылки встречается термин, как например тут:
<a href="url">текст термин текст</a>
то preg_replace заменяет термин в названии ссылки тоже и весь код страницы портиться. как ограничить preg_replace чтобы он не трогал термины внутри названий уже существующих ссылок.
 
текущий код замены:
$glossary['str'] = "(\b|\B)".$glossary['str']."(\b)";
$row['full_story'] = preg_replace("'".$glossary['str']."'i", "<a href=\"".$glossary_link."\">".$glossary['str']."</a>", $row['full_story']);
 
 
пробую так:
$glossary['str'] = "(^2|\b|\B)".$glossary['str']."(^2|\b)(?!<\/a)";
выходит но только если термин стоит прямо перед </a> , показать что там могут быть ещё слова не получается  


Всего записей: 8 | Зарегистр. 26-05-2003 | Отправлено: 14:25 13-10-2009
gagar9

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть такой   файл  txt    
 
 Parent Directory        03-Jul-2009 15:51      -  
 02206b.jpg              08-Sep-2009 14:54    24k  
 03902b.jpg              26-Aug-2009 13:49    62k  
 08738b.jpg              18-Aug-2009 15:26   110k  
 10106b.jpg              21-Jul-2009 14:23    63k  
 1010b.jpg               21-Jul-2009 14:23    57k  
 1011b.jpg               21-Jul-2009 14:23   190k  
 10279b.jpg              21-Jul-2009 14:23     4k  
 1030b.jpg               21-Jul-2009 14:23    89k  
 10313b.jpg              21-Jul-2009 14:23    14k  
 1032b.jpg               21-Jul-2009 14:23    75k  
 
из  него   можно  виташить толко    все  
02206b.jpg
03902b.jpg  
и т.д
 
 
 
есть такой   код как изменить чтобы   получить то что  хочу  
это чётко  работает для   электроных  адресов   удирает  все  ненужные  и  вытаскивает Емайл адреса  
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>....das6....</title>
 
</head>
 
<body>
 
<?php
error_reporting(0);
 
$fp=fopen('1.txt','a+');
 
$r=fread($fp,filesize('1.txt'));
fclose($fp);
 
 
///////////////reg exp////////////////////
$all_reg='|([\w\d-_\.]{2,40}@[\w\d-_\.]{2,40}\.[\w-_]{2,10})|i';
preg_match_all($all_reg, $r, $all, PREG_SET_ORDER);
/////////////////////////////////////////
 
 
echo '';
for($i=0;$i<count($all);$i=$i+5)
 
{
echo ''.$all[$i][1].'<br>'.$all[$i+1][1].'<br>'.$all[$i+2][1].'<br>'.$all[$i+3][1].'<br>'.$all[$i+4][1].'<br>';
}
 
 
echo '';
 
 
 
?>
 
</body>
</html>

Всего записей: 3 | Зарегистр. 22-10-2009 | Отправлено: 13:48 22-10-2009 | Исправлено: gagar9, 13:56 22-10-2009
JacobyD

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

Цитата:
есть такой   код как изменить чтобы   получить то что  хочу    
 
круто объясняешь...
 
"\.jpg(*?.)$"    ,   " \.jpg"

Всего записей: 38 | Зарегистр. 03-08-2009 | Отправлено: 16:53 22-10-2009 | Исправлено: JacobyD, 16:54 22-10-2009
koc



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

Код:
[:loop a in b:]
    text1
    [:loop d in a.b:]
        text2
    [:endloop:]
    text3
[:endloop:]
 
[:loop e in f:]
text4
[:endloop:]

 
как можно выбрать то, что внутри внешних тегов? :

Код:
    text1
    [:loop d in a.b:]
        text2
    [:endloop:]
    text3
 

 

Код:
text4


Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 21:24 07-11-2009 | Исправлено: koc, 21:26 07-11-2009
koc



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
я пишу шаблонизатор. И вот там будут вложенные циклы, блоки, условия и тд. Как их парсить не пойму.

Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 23:43 08-11-2009
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
походу рановато вам писать свой шаблонизатор)

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 23:53 08-11-2009
koc



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
кто знает. Уже год работаю по аутсорсингу с эстонцами в поддержке крупной CMS'ки. В свободное от работы и учебы время занимаюсь своей.
 
Можно использовать h2o-шаблонизатор (там такой же синтаксис - джангоподобный), но я хочу свой.

Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 00:02 09-11-2009
Vofka



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
видел и перепробовал много разных шаблонизаторов, но для себя выбрал шаблонизатор от phpbb3
все включено и циклы и блоки и условия
 
 
 
Добавлено:
и лэнг в шаблон подхватывает без объявления, в самом шаблоне нужно только L_ в начало добавить.

Всего записей: 210 | Зарегистр. 22-10-2002 | Отправлено: 01:05 09-11-2009
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koc
Регулярные выражения не предназначены для подобных действий. Тут нужен полноценный парсер и интерпретатор.

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 04:50 09-11-2009
koc



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
evle
 
$string = "some text (a(b(c)d)e) more text (c(d(e)f)g) aa";
if (preg_match_all("#\((?>[^()]+|(?R))*\)#", $string, $matches)) {
    echo "<pre>"; print_r($matches); echo "</pre>";
}
такая вещь распарсивается.
 
и такой простыней кода шаблон разделяется на отдельные циклы _http://pastebin.mozilla-russia.org/102577
 
Ладно, написать свой шаблонизатор была не самая удачная затея. Я перешел на h2o (хттп://www.h2o-template.org/)

Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 12:23 09-11-2009 | Исправлено: koc, 12:30 09-11-2009
eternal2000



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

Код:
 
<!-- BEGIN #meta -->
<div class="meta">
         
        <h3 class="m-groups">Группы товаров</h3>
    <ul class="mn">
                <li><a href="/catalog/233/" class="sec-233">Первое</a></li>
                <li><a href="/catalog/232/" class="sec-232">Другое</a></li>
                <li><a href="/catalog/342/" class="sec-342">Третье</a></li>
            </ul>
        
    <div class="sclear"></div>
        <h3 class="m-tags" id="tags-header"><a href="#" onclick="toggleTags();return false;" class="js">Метки товаров</a></h3>
    <ul class="mt" id="tags">
                        <li><a style="font-size:120%" href="/catalog/tag/bsod/">bsod</a></li>
                        <li><a style="font-size:120%" href="/catalog/tag/intel/">intel</a></li>
                        <li><a style="font-size:120%" href="/catalog/tag/lexus/">lexus</a></li>
                        <li><a style="font-size:133.684210526%" href="/catalog/tag/mitsubishi/">mitsubishi</a></li>
                        <li><a style="font-size:120%" href="/catalog/tag/nokia/">nokia</a></li>
                        <li><a style="font-size:133.684210526%" href="/catalog/tag/алкоголь/">алкоголь</a></li>
            </ul>
    </div>
<!-- END #meta -->
 

 
подскажите регулярку которая заменить ссылки типа "/catalog/233/" на "/catalog.php?id=233" и "/catalog/tag/bsod/" на "/catalog_tag.php?id=bsod"
т.е. чтобы на выходе был весь этот код, только с заменеными ссылками

Всего записей: 185 | Зарегистр. 11-11-2007 | Отправлено: 22:26 21-11-2009 | Исправлено: eternal2000, 22:27 21-11-2009
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
'#/catalog/(\d+?)/#', '/catalog.php?id=$1'
'#/catalog/tag/(\w+?)/#', '/catalog_tag.php?id=$1'

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 22:34 21-11-2009 | Исправлено: andead, 22:34 21-11-2009
eternal2000



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
эмм... а можно не только саму регулярку а полный php код вместе с ней?)

Всего записей: 185 | Зарегистр. 11-11-2007 | Отправлено: 23:02 21-11-2009
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
$text = preg_replace('#/catalog/(\d+?)/#', '/catalog.php?id=$1', $text);
$text = preg_replace('#/catalog/tag/(\w+?)/#', '/catalog_tag.php?id=$1', $text);

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 00:38 22-11-2009
eternal2000



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

Всего записей: 185 | Зарегистр. 11-11-2007 | Отправлено: 01:03 22-11-2009
miksanfree



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите почему регэксп:
some?.thing
срабатывает и на
some thing
и на
something
 
Сам составлял, но хоть убей не могу понять как я его придумал.

Всего записей: 745 | Зарегистр. 28-07-2006 | Отправлено: 03:21 28-11-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miksanfree
потому что ? означает, что буква e может быть, а может и не быть
в то же время . означает любую букву.
ну вот и додумывайте.


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:30 28-11-2009
SHIRATANI



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, помогите решить такую задачу
Из секции VirtualHost, конфига апача,  
<VirtualHost {IP}>
ServerAdmin webmaster@site.com
DocumentRoot /path/to/site.com/html
Servername site.com
ServerAlias www.site.com  
CustomLog /usr/local/apache/logs/site.com_access combined
</VirtualHost>
 
нужно получить значение Servername и DocumentRoot, и поместить их в массив $serv[<Servername>]=[<DocumentRoot>]

Всего записей: 50 | Зарегистр. 06-12-2007 | Отправлено: 05:15 28-11-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SHIRATANI
ну так получите.. построчная регулярка.. начало вы знаете
/^Servername\s+(.*)$/im

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:55 28-11-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 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