Ru-Board.club
← Вернуться в раздел «Web-программирование»

» PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

Автор: Sutar
Дата сообщения: 15.12.2012 14:20
Cheery
Правильно?


Код: $c = "31938417dcale.jpg";
if(preg_match("#\.(jpg|jpeg|png)$#i", $c, $format)) {echo "$c - OK.";} else {echo "$c - Error.";}

echo "<br/>". $format[0];
Автор: Sutar
Дата сообщения: 21.12.2012 17:43
Как можно сделать регулярную проверку, чтоб текст был от 1 до 30?


Код: $a = "[1][1][1][3][1][3][1][14][10][14][1][1][fd]";
echo preg_replace("#\[([1-30])\]#iU", "<img alt=\"\" src=\"images/smiles/$1.gif\"/>", $a);
Автор: ubian
Дата сообщения: 22.12.2012 14:57
Здравствуйте! Есть код:

Код:
http://www.smt.ua/pics/photo/29240_73225.jpg" rel="photo_grouptop"><img src="http://www.smt.ua/pics/thumb/29240_33608.jpg" width="320" height="239" alt="Ноутбук HP 655 (B6N19EA) + Сумка НР" /></a></td></tr></table></li>http://www.smt.ua/pics/photo/29240_42876.jpg" rel="photo_grouptop"><img src="http://www.smt.ua/pics/thumb/29240_33609.jpg" width="320" height="239" alt="Ноутбук HP 655 (B6N19EA) + Сумка НР" /></a></td></tr></table></li>http://www.smt.ua/pics/photo/29240_37473.jpg" rel="photo_grouptop"><img src="http://www.smt.ua/pics/thumb/29240_33610.jpg" width="320" height="239" alt="Ноутбук HP 655 (B6N19EA) + Сумка НР" /></a></td></tr></table></li>http://www.smt.ua/pics/photo/29240_79272.jpg" rel="photo_grouptop"><img src="http://www.smt.ua/pics/thumb/29240_33611.jpg" width="320" height="239" alt="Ноутбук HP 655 (B6N19EA) + Сумка НР" /></a></td></tr></table></li>http://www.smt.ua/pics/photo/29240_88368.jpg" rel="photo_grouptop"><img src="http://www.smt.ua/pics/thumb/29240_33612.jpg" width="320" height="239" alt="Ноутбук HP 655 (B6N19EA) + Сумка НР" /></a></td></tr></table></li>http://www.smt.ua/pics/photo/29240_76875.jpg" rel="photo_grouptop"><img src="http://www.smt.ua/pics/thumb/29240_33613.jpg" width="320" height="239" alt="Ноутбук HP 655 (B6N19EA) + Сумка НР" /></a></td></tr></table></li>http://www.smt.ua/pics/photo/29240_85667.jpg" rel="photo_grouptop"><img src="http://www.smt.ua/pics/thumb/29240_33614.jpg" width="320" height="239" alt="Ноутбук HP 655 (B6N19EA) + Сумка НР" /></a></td></tr></table></li>http://www.smt.ua/pics/photo/29240_55000.jpg" rel="photo_grouptop"><img src="http://www.smt.ua/pics/thumb/29240_33615.jpg" width="320" height="239" alt="Ноутбук HP 655 (B6N19EA) + Сумка НР" /></a></td></tr></table></li>
Автор: Cheery
Дата сообщения: 23.12.2012 21:43
Sutar

Цитата:
нужно чтоб не преобразовывало где в [] <= 0 и > 30

регуляркой этого лучше не делать
вернее вытаскивать можно, но проверять диапазон - нет

ubian

Цитата:
$image_list = preg_split('|".*</li>|si',$image_text);

а "жадность"?

Автор: Sutar
Дата сообщения: 24.12.2012 09:25
Cheery

Цитата:
регуляркой этого лучше не делать
вернее вытаскивать можно, но проверять диапазон - нет


Я делал по началу вот так:


Код: for($i = 1; $i <= 30; $i++)
{
$text = str_replace("[$i]", "<img alt=\"\" src=\"images/smiles/$i.gif\"/>", $text);
}
Автор: Cheery
Дата сообщения: 24.12.2012 10:04
Sutar
еще раз повторю - регулярка не для этого
используйте
preg_replace_callback для проверки
Автор: zolotou87
Дата сообщения: 19.01.2013 14:41
[more] Со странички я вытакиваю в массив текст между тегами с помощью file_get_contents и preg_match, этот текст состоит из русских, латинских символов и цифр. Проблема в том что русские слова заносятся в массив не в той кодировке.

Из строки:

Код: <title>Русский English </title>
Автор: Sutar
Дата сообщения: 31.01.2013 18:59
В чем ошибка?


Код: <?php
$d = "n_13";
echo preg_replace("#\n_(0-9)#i", "$1", $d);
?>
Автор: DrakonHaSh
Дата сообщения: 31.01.2013 19:24
Sutar

Цитата:
В чем ошибка?

в вашем полном непонимании вопроса в одной строке "сто" ошибок.


Код:
$d = "n_13";
preg_match_all('#([a-zA-Z]+)_(\d+)#', $d, $match, PREG_SET_ORDER);

echo "<pre>";
print_r($match);

=>
Array
(
[0] => Array
(
[0] => n_13
[1] => n
[2] => 13
)

)
Автор: Sutar
Дата сообщения: 31.01.2013 23:38
DrakonHaSh
Спасибо огромное.
Автор: ubian
Дата сообщения: 06.02.2013 13:10
Есть регулярное выражение:

Код:
preg_match_all("'http:\/\/www.smt.ua\/pics\/photo\/.{11}\.jpg'si",$content,$image_list);
Автор: Cheery
Дата сообщения: 06.02.2013 19:37
ubian
там нет www.
Автор: ubian
Дата сообщения: 07.02.2013 14:57
Cheery
Спасибо.. Наверное они изменили свой шаблон.... Когда писался скрипт wwww. там был...
Автор: yakoval
Дата сообщения: 25.02.2013 07:06
Всем привет!
Нужно из текста

Код:
<div>block text 1</div><b>link</b>
<div>block text 2</div><i>italic</i>
<div>block text 3</div><b>link</b>
Автор: Cheery
Дата сообщения: 25.02.2013 07:21
yakoval
/<div>([^<]+)<\/div><b>(.*)<\/b>/Uui
Автор: yakoval
Дата сообщения: 25.02.2013 07:37
Cheery,
Нужно именно исключить последовательность "<i>", а символ "<" попадаться может. В этом и трудность.Свой вариант регулярки написал в коде:
"/<div>(?(?!.*?<i>.*?)(.*?))<\/div><b>(.*?)<\/b>/ui"
Автор: Cheery
Дата сообщения: 25.02.2013 07:40
yakoval
исключить <i> после или внутри <div>?


Код: /<div>(??!<i>).)*?<\/div><b>(.*?)<\/b>/ui
Автор: yakoval
Дата сообщения: 25.02.2013 07:52
Cheery
Внутри. Оно и исключается, но отбрасываюсятся результаты, которые находятся на одной строке с тегом <i> и до него. Т.е. не выкраивается в случае вида
<div>block text 1</div><b>link</b><div>block text 2</div><i>italic</i>
Автор: Cheery
Дата сообщения: 25.02.2013 07:56
yakoval
держите
/<div>(?:(?!<i>).)*?<\/div><b>(.*?)<\/b>/ui
Автор: yakoval
Дата сообщения: 25.02.2013 08:28
Cheery,
Спасибо! Но ваш вариант не запоминает содержимое div-ов, даже если убрать "?:" . А это нужно.
Автор: Cheery
Дата сообщения: 25.02.2013 08:35
yakoval

Цитата:
А это нужно

ну добавьте еще скобки - это можно было сделать и самостоятельно )
/<div>((?:(?!<i>).)*?)<\/div><b>(.*?)<\/b>/ui
Автор: yakoval
Дата сообщения: 25.02.2013 11:16
Cheery
Огромное спасибо!
Автор: DrakonHaSh
Дата сообщения: 27.02.2013 18:40
а можно регуляркой выбрать все строки текста, *кроме* строк с условием. например все строки, кроме тех, в которых есть (xxx1|xxx2) ?

т.е. выбрать из строк
xxx xxx1
xxx xxx2
xxx xxx3
xxx xxx4

только строки
xxx xxx3
xxx xxx4

Автор: Cheery
Дата сообщения: 27.02.2013 18:59
DrakonHaSh
используйте модификатор m и тогда ^ будет начало строки, а $ - конец
а для остального - выше же пример есть

Код: $str = 'xxx xxx1
xxx xxx2
xxx xxx3
xxx xxx4';

preg_match_all('#^(?:(?!(xxx1|xxx2)).)*$#mU', $str, $f);
var_dump($f);
Автор: DrakonHaSh
Дата сообщения: 27.02.2013 21:05
Cheery
спасибо. выше, сорри, не смотрел - как-то в голову не приходила мысль что ответ на мой вопрос частично уже обсуждается в последних сообщениях.

а можно поподробнее о логике этой регулярки ? что эта за фича такая (?:(?!PATERN).)* ?
Автор: Cheery
Дата сообщения: 27.02.2013 21:20
DrakonHaSh
http://www.php.net/manual/ru/regexp.reference.assertions.php
http://www.php.net/manual/ru/regexp.reference.subpatterns.php
Автор: Sutar
Дата сообщения: 04.03.2013 14:08
Почему мне при вводе русских символов всегда возвращается false?


Код: $text = "Привет друг 971";
if(preg_match("#^[А-я0-9]{2,32}$#", $text) {echo "true";} else {echo "false";}
Автор: Cheery
Дата сообщения: 04.03.2013 19:30
Sutar

Цитата:
^[А-я0-9]{2,32}$

а пробел где? к тому же не факт, что сработает A-я, иначе бы не писали А-Яа-я
Автор: Sutar
Дата сообщения: 04.03.2013 20:58
Cheery

Код: "#^[А-Я а-я 0-9 ї і ё Ё]{2,32}$#"
Автор: Cheery
Дата сообщения: 04.03.2013 21:16
Sutar

Цитата:
ничего не пропустил?

пробел идет как \s
далее - уникод? тогда и надо говорить модификатором u, что это уникод

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: Xitami Web Server + PHP+ zend optimizer


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.