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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите написать регулярное выражение для таблицы вытаскивающие то, что стоит на месте *, количество строк может быть любое
</tr>
<tr class="odd">
<td>1</td>
<td>*</td>
<td>*</td>
<td>*</td>
<td>*</td>
</tr>
<tr class="even">
<td>2</td>
<td>*</td>
<td>*</td>
<td>*</td>
<td>*</td>
</tr>
итд
Сам же и отвечаю  
 
"<td>(.*)</td>[\s]*<td>(.*)</td>[\s]*<td>(.*)</td>[\s]*<td>(.*)</td>[\s]*<td>(.*)</td>"

Всего записей: 22 | Зарегистр. 27-04-2006 | Отправлено: 13:13 18-05-2011 | Исправлено: gorakh, 10:17 19-05-2011
Cheery



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

Цитата:
регулярное выражение для таблицы

делающее что? про такие вещи тоже не забывайте

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:12 19-05-2011
gidrosoldat



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Алоха, нужна помощь в составлении регулярного выражения:
есть вот такая кривая строчка (предполагаемая зарплата):  
$salary[1] ='
             
    от 35 000
             
     до 120 000
             
     руб. ';
надо из нее выдернуть эти две цифры.
Делаю так, но мой вариант не всегда срабатывает.
 
 

Код:
if(preg_match('#от\s([\d\s]+)\sдо\s([\d\s]+)\s(.+)$#ui', $salary[1], $opt))
{
   $min = preg_replace('#\s#ui', '', $opt[1]);
   $max = preg_replace('#\s#ui', '', $opt[2]);
}

 
Иногда preg_match вообще не срабатывает, что я не так делаю?

Всего записей: 34 | Зарегистр. 24-02-2011 | Отправлено: 12:51 07-06-2011 | Исправлено: gidrosoldat, 16:36 07-06-2011
sitd777



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
проверил - работает
 
если заменить в выражении # на /
 

Код:
 
if(preg_match('/от\s([\d\s]+)\sдо\s([\d\s]+)\s(.+)$/ui', $salary, $opt))
 

 
# используется в регулярных выражениях для других целей
 

Всего записей: 14 | Зарегистр. 31-05-2011 | Отправлено: 15:03 09-06-2011
laburj

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

Всего записей: 200 | Зарегистр. 09-02-2006 | Отправлено: 01:24 10-06-2011 | Исправлено: laburj, 17:45 10-06-2011
Dima555555



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
$str = 'id="10" fdsafdas id="20"" afdsfdasfd id="30" fafafaaaads';
preg_match_all('#(id\="\d+")#is', $str, $match);
print_r($match);
 
подскажите, куда и как поставить '$' что в массиве было только последнее значение т.е. id="30"

Всего записей: 1682 | Зарегистр. 12-06-2006 | Отправлено: 17:59 09-07-2011
alltrash

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dima555555
$ обозначает конец строки, а не последнее вхождение
 
сделай так echo $match[1][sizeof($match)];

Всего записей: 14 | Зарегистр. 23-07-2006 | Отправлено: 23:52 09-07-2011
holden321

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите как удалить все до первого нужного символа
допустим до первого двоеточия
из "one:two:three" нужно получить "two:three"
если делать preg_replace("/.*:(.*)/","$1","one:two:three") то результат "three"
типо жадность срабатывает,  
а если добавить "?" preg_replace("/.*:?(.*)/","$1","one:two:three") то вообще пустая строка в  итоге ;(

Всего записей: 148 | Зарегистр. 04-03-2009 | Отправлено: 17:19 10-07-2011 | Исправлено: holden321, 17:22 10-07-2011
alltrash

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
holden321
тут можно обойтись и без рег. выр.

Код:
 
<?php  
$str = 'one:two:three';
echo substr(strstr($str, ':'), 1);
?>
 

ну а если все-таки хочется с регуляркой, то
preg_replace("/[^:]+:(.*)/","$1","one:two:three");

Всего записей: 14 | Зарегистр. 23-07-2006 | Отправлено: 17:46 10-07-2011 | Исправлено: alltrash, 17:46 10-07-2011
holden321

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спасибо, работает :)
не то что очень хочеться но регулярка больше подходит потому что будут еще другие преобразования там же

Всего записей: 148 | Зарегистр. 04-03-2009 | Отправлено: 18:07 10-07-2011
Nagolder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Немного не в тему, но не создавать же отдельный топик из-за мелкого вопроса .
 
$_POST['MyTextarea']=str_replace('href="//','href="',$_POST['MyTextarea']);
Не работает.
 
$_POST['MyTextarea']=str_replace('//','',$_POST['MyTextarea']);
Работает, но мне нужен именно первый вариант. Подскажите пожалуйста, что я не так делаю?
 
использовал str_replace как простейшую функцию, здесь многого и не надо. Регулярку вставлять придется, если не решу в этом виде.
 
Заранее благодарен.
 
UPD: Все, вопрос снят, посыпаю голову пеплом и извиняюсь, что отнял время Обычная невнимательность, не заэкранировал  кавычки... Затык. Типа смотришь в книгу, а видишь фигу

Всего записей: 120 | Зарегистр. 24-09-2006 | Отправлено: 22:44 22-07-2011 | Исправлено: Nagolder, 23:01 22-07-2011
alexbel31

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

Всего записей: 32 | Зарегистр. 23-01-2009 | Отправлено: 10:26 25-07-2011 | Исправлено: alexbel31, 11:22 25-07-2011
S1NT3Z



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как из строки
cpe.php?id=59941&pa=0&r=19
 
вынуть значение id, т.е. 59941 ??

Всего записей: 80 | Зарегистр. 23-06-2006 | Отправлено: 23:38 28-07-2011
kivan



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

Код:
$subject = 'cpe.php?id=59941&pa=0&r=19';
parse_str(parse_url($subject, PHP_URL_QUERY), $output);
echo $output['id'];
 

 
Вариант 2:

Код:
$subject = 'cpe.php?id=59941&pa=0&r=19';
if (preg_match('/id=(\d+)/', $subject, $regs)) {
    $result = $regs[1];
} else {
    $result = "";
}
echo $result;  



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

Всего записей: 341 | Зарегистр. 23-11-2004 | Отправлено: 13:08 01-08-2011 | Исправлено: kivan, 13:13 01-08-2011
alexbel31

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
 
Есть HTML код

Код:
 
<span class="jr_fieldtitle-contentview">Мировая премьера</span>: <span class="jr_fieldvalue-contentview">12.08.2011 г.</span><br />
<span class="jr_fieldtitle-contentview">Премьера в России</span>: <span class="jr_fieldvalue-contentview">25.08.2011 г.</span><br />
 

 
Есть регулярка

Код:
 
/<span class="jr_fieldtitle-contentview">Мировая премьера<\/span>: <span class="jr_fieldvalue-contentview">(.*)<\/span><br \/>/
 

 
Результат выводит  

Код:
 
12.08.2011 г.</span><br />
<span class="jr_fieldtitle-contentview">Премьера в России</span>: <span class="jr_fieldvalue-contentview">25.08.2011 г.
 

 
Что нужно добавить, что вырезала до первого </span><br /> и получился ответ 12.08.2011 г.?

Всего записей: 32 | Зарегистр. 23-01-2009 | Отправлено: 13:15 10-08-2011
Nagolder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу помощи у специалистов. До самого не доходит, запутался совсем
 
Не могу решить следующую проблему:
 
в строковой переменной уже есть html (содержимое из визивига). Необходимо пропарсить ее и если картинка имеет class="lb", то заменить к примеру  
<img alt="text" class="lb" src="/images/name.jpg" />  
на  
<a title="text" rel="lytebox" href="/images/name.jpg"><img alt="text" class="dborder" src="/images/name-k.jpg" /></a>
и при каждом нахождении запускать еще надо внешнюю функцию (к примеру thumb($image_name)) которая и будет создавать превьюшки с соответствующим суффиксом. Сама функция есть и прекрасно работает.
 
 
 
Помогите пожалуйста, мозги уже кипят
 
 
PS. Понятно, что готовое решение не прошу. Но хотя бы саму регулярку и логику помогите построить пожалуйста...
PPS. На другом форуме подсказали решение. Вопрос снимается. Если кому интересно - вот решение:
 

Код:
 
<?php
 
$t='<img width="300" alt="text123" class="lb" height="150" src="/images/name1.jpg" />
<br>
<img width="300" alt="text1234" class="lb1" height="150" src="/images/name2.jpg" />
<br>
<img alt="text321" class="lb" src="/images/name3.gif" />';
 
 
if(preg_match_all('#class="lb".*src="/images/(.*\.(jpg|png|gif))"#mUsi',$t,$k)){
 
for($c=0;$c!=count($k[1]);$c++){
 
$this->thumb($k[1][$c]);
 
 
}
 
}
echo "<br /><br /><br /><br />";
$t=preg_replace('#\<img(.*)alt="(.*)"(.*)class="lb"(.*)src="(.*)\.(jpg|gif|png)\"(.*)>#mi','<a title="\2" rel="lytebox" href="\5.\6"><img alt="\2" class="dborder" src="\5-k.\6" /></a>',$t);
 
 
echo $t;
 
?>
 

 
 

Всего записей: 120 | Зарегистр. 24-09-2006 | Отправлено: 04:02 13-08-2011 | Исправлено: Nagolder, 00:34 14-08-2011
Mamay



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

Код:
$str = '<span class="jr_fieldtitle-contentview">Мировая премьера</span>: <span class="jr_fieldvalue-contentview">12.08.2011 г.</span><br />  
<span class="jr_fieldtitle-contentview">Премьера в России</span>: <span class="jr_fieldvalue-contentview">25.08.2011 г.</span><br /> ';
preg_match_all('~<span class="jr_fieldvalue-contentview">([^<]*)~is',$str,$match);



----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 12:40 19-08-2011 | Исправлено: Mamay, 12:42 19-08-2011
Karpenkos

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сделать так, чтоб если человек вкинул URL сайта, то его сразу переносило в теги <a></a>
Например, я в комментарии, написал: http://site.com/
 
И после добавления, строка http://site.com/ меняется на <a href="http://site.com/">http://site.com/</a>

Всего записей: 142 | Зарегистр. 08-10-2011 | Отправлено: 15:01 08-11-2011
Nagolder

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

Цитата:
строка http://site.com/ меняется на <a href="http://site.com/">http://site.com/</a>

 
 
 
 
$text = preg_replace('#(?<!\])\bhttp://[^\s\[<]+#i', "<a href=\"$0\">$0</a>", $text);  
 
Взято откуда-то из примеров, сам не проверял.

Всего записей: 120 | Зарегистр. 24-09-2006 | Отправлено: 19:42 08-11-2011
Karpenkos

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nagolder
Спасибо большое, работает на ура.
А можете ещё написать или найти, чтоб если кинуть ссылку просто site.com, без приставки http:// то её тоже преобразовывало...

Всего записей: 142 | Зарегистр. 08-10-2011 | Отправлено: 14:51 09-11-2011
Открыть новую тему     Написать ответ в эту тему

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