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

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

Автор: relictus
Дата сообщения: 03.10.2012 10:22
hawik
К сожалению, слово "руб" не всегда есть. И для моей задачи можно смело игнорировать слитно идущие цифры числом больше 4х (дабы не пропустить 8-962-441-1694). Насчет нулей - а вдруг попадется такая цена, как 1200500 (ну мало ли )?
Так что вопрос все ще актуален.
Автор: relictus
Дата сообщения: 04.10.2012 09:33
Так что нужно добавить к "((8|7)[-]?)?(\(?\d{3}\)?)?[-]?[-\d]{7,15}", чтобы исключить из найденного последовательности цифр БЕЗ символа "-" ?
Автор: Cheery
Дата сообщения: 04.10.2012 09:38
relictus
не всегда удобно городить регулярки
вы когда используете preg_match_all, то оно возвращается и кусок строки, который попал под регулярку. вот и смотрите, есть ли там дефисы или нет
Автор: relictus
Дата сообщения: 09.10.2012 09:53
Помогите составить регулярку для поиска числа между подчеркнутыми тегами, пожалуйста:

Код: <tr><td class=f80'> Найдено объявлений: <span class=f90>1110</span></td><td class=f80 align=right>
Автор: neznayka3
Дата сообщения: 09.10.2012 11:16
relictus

Код: <span[^>]*>(.*)</span>
Автор: Sutar
Дата сообщения: 28.10.2012 12:21
Вот такой есть скрипт:


Код: $_POST["depiction"] = preg_replace("#\[(sb|su|si|ss)\](.*)\[/\\1\]#iU", "<$1>$2</$1>", $_POST["depiction"]);
Автор: Sutar
Дата сообщения: 31.10.2012 23:49
ну кто-то поможет в чем проблема?
Автор: Cheery
Дата сообщения: 01.11.2012 00:00
Sutar

Цитата:
в чем проблема

в том, что в данном случае регулярки не работают рекурсивно и захватывают первый попавшийся паттерн


Код: $text = "[sb][su][si]OK![/si][/su][/sb]... [sb][su]Delete![/su][/sb]";
$text = preg_replace_callback("#\[(sb|su|si|ss)\](.*)\[/\\1\]#iU", 'replace_tags', $text);

echo $text;

function replace_tags($matches)
{
$text = '<' . $matches[1] . '>' . preg_replace_callback("#\[(sb|su|si|ss)\](.*)\[/\\1\]#iU", 'replace_tags', $matches[2]) . '</' . $matches[1] . '>';
return $text;
}
Автор: Sutar
Дата сообщения: 01.11.2012 11:56
Cheery
Спасибо большое.
Но а с помощью регулярных выражений нельзя такого сделать?
Автор: Cheery
Дата сообщения: 01.11.2012 20:11
Sutar

Цитата:
Но а с помощью регулярных выражений нельзя такого сделать?

может и можно, но я не хочу на это тратить время, особенно когда есть более очевидный и понятный всем способ.
Автор: Sutar
Дата сообщения: 08.11.2012 17:19
Cheery
таим скриптом пользуются все движки сайтов?)
Автор: Cheery
Дата сообщения: 08.11.2012 19:26
Sutar

Цитата:
таим скриптом пользуются все движки сайтов?)

возьмите любой и посмотрите код.
Автор: DarkSmoke
Дата сообщения: 09.11.2012 17:04
Помогите составить регулярное выражение, нужно из всего ХТМЛ вырвать таблицу

Код: <table id="course-table-pb">
<tbody>
<tr>
<th width="24%">Валюта:</th>
<th width="40%" style="text-align:right;">покупка</th>
<th width="36%" style="text-align:right;">продажа</th>
</tr>
<tr>
<td width="26%">EUR</td>
<td width="9%" style="text-align:right;">10.34</td>
<td width="25%" style="text-align:right;">10.64</td>
</tr>
<tr>
<td width="26%">USD</td>
<td width="9%" style="text-align:right;">8.180</td>
<td width="25%" style="text-align:right;">8.220</td>
</tr>
<tr>
<td width="26%">RUB</td>
<td width="9%" style="text-align:right;">0.255</td>
<td width="25%" style="text-align:right;">0.265</td>
</tr>
</table>
Автор: Cheery
Дата сообщения: 09.11.2012 20:24
DarkSmoke

Цитата:
Помогите составить регулярное выражение, нужно из всего ХТМЛ вырвать таблицу

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

#<table.*id="course-table-pb">.*</table>#isU
Автор: Cheery
Дата сообщения: 14.11.2012 08:21
Sutar

Цитата:
таим скриптом пользуются все движки сайтов?)

в принципе рекурсия не нужна, если делать подряд и написать регулярное выражение для каждого заменяемого кода.
Автор: daniilino
Дата сообщения: 02.12.2012 10:05
Всем доброго времени суток. Понадобилось проверить строку на отсутствие символов кроме заданного набора в PHP. Например, есть переменная $login, которая может содержать только [A-Z],[a-z],[0-9],"-" и "_". Как проверить строку на отутствие любых символов кроме этих? Как должна выглядеть такая функция? Просто не могу чётко сформулировать для поисковика.
Заранее благодарен.
Автор: Wahnsinn
Дата сообщения: 03.12.2012 01:21
daniilino
if(!preg_match("/^[a-zA-Z0-9-_]{1,}$/u",$login)){
echo "no";
}
Автор: daniilino
Дата сообщения: 04.12.2012 22:27
Wahnsinn
Спасибо, именно то, что нужно было!
Автор: Xant1k
Дата сообщения: 12.12.2012 10:00
Подсобите с выражением. Пытаюсь через Yahoo Pipes прогнать RSS ленту содержащую:

1.
(Classic Rock, Hard Rock, Southern Rock) Les Dudek - Ghost Town Parade & Gypsy Ride - 1978, 1981, FLAC (tracks+.cue), lossless [497 MB]
или
[Обновлено] (Blues, Blues-Rock, Folk-Rock) Mark Knopfler - Официальная дискография (7 альбомов, 6 промо, 7 синглов, 2 EP, 1 ECD / 27 изданий) - 1996-2012, FLAC (image+.cue, tracks+.cue), lossless [6.06 GB]
или
(Southern Rock) Outlaws - Los Hombres Malo - 1982, APE (image+.cue), lossless [383 MB]

Требуется оставлять только середину (название исполнителя и альбома). Пока нашел способ убрать "lossless" через
[^\s]*lossless[^\s]*


2.
Привести ленту вида (Southern Rock) Outlaws - Los Hombres Malo - 1982, APE (image+.cue), lossless [383 MB] к

Outlaws - Los Hombres Malo

(Southern Rock)
APE (image+.cue)
если возможно. Главное вынести отдельной строкой название исполнителя/группы и альбома.

3.
Есть готовый вариант фильтра который из множества новостей отбирает содержащие только 2011 и 2010г.
.*(2010|2011).*track\+.cue.*?
Или так.. Зависит от реализации парсера:
.*(2010|2011).*track\+\.cue.*?

Требуется добавить к правилу что бы новости содержащие, например Collection, Дискография, Discography, и прочие добавляемые по желанию, не попадали в фильтр.

Ссылка на ленту если что http://feed.rutracker.org/atom/f/1702.atom

А вообще есть в паутине какой-нибудь софт с информативными подсказками, может готовыми примерами(исключающие из текста определенные слова, цифры, или фразы). Не очень то и получается вникнуть в теорию, понять логику работы
Автор: neznayka3
Дата сообщения: 12.12.2012 10:50
Xant1k

Цитата:
А вообще есть в паутине какой-нибудь софт с информативными подсказками

есть
Автор: Sutar
Дата сообщения: 13.12.2012 14:38
Мне нужно узнать, какой формат используется в название.
Например, есть название name.pro.stop.exe мне нужно получить .exe формат.

Вот код, только он что-то не совсем правильно работает:


Код: <?php
$d = "name.pro.stop.exe";
echo preg_replace("#(.*)(jpg|jpeg|png|rar|exe)#iU", ".$2", $d);
?>
Автор: Cheery
Дата сообщения: 13.12.2012 20:08
Sutar
www.php.net/pathinfo
Автор: Sutar
Дата сообщения: 13.12.2012 21:36
Cheery
Просто мне нужно ещё сделать проверку, чтоб формат файла был точно jpg|jpeg|png если другой, дальнейшие действия не будут делаться.
Автор: Cheery
Дата сообщения: 13.12.2012 22:09
Sutar
так и пишите сразу.. что нужно получить расширение файла.

зачем вам для этого replace??
www.php.net/preg_match

#\.(jpg|jpeg|png)$#i
Автор: Sutar
Дата сообщения: 13.12.2012 23:41
Ну мне нужно получить и проверить, чтоб название файла содержало jpg|jpeg|png.
проверку сделал. а как теперь получить формат файла??
Автор: Cheery
Дата сообщения: 13.12.2012 23:49
Sutar

Цитата:
проверку сделал. а как теперь получить формат файла??

preg_match вернет и расширение
Автор: Sutar
Дата сообщения: 14.12.2012 11:52

Цитата:
preg_match вернет и расширение



Код: <?php
$a = "lock.pro-img.png";
$b = "start.ico";
$c = "31938417dcale.jpg";

if(preg_match("#\.(jpg|jpeg|png)$#i", $a)) {echo "$a - Файл загружен.<br/>";} else {echo "$a - Файл не загружен.<br/>";}
if(preg_match("#\.(jpg|jpeg|png)$#i", $b)) {echo "$b - Файл загружен.<br/>";} else {echo "$b - Файл не загружен.<br/>";}
if(preg_match("#\.(jpg|jpeg|png)$#i", $c)) {echo "$c - Файл загружен.<br/>";} else {echo "$c - Файл не загружен.<br/>";}

$c = preg_match("#\.(jpg|jpeg|png)$#i", $c);
echo "<br/>$a<br/>$b<br/>$c";
?>
Автор: Cheery
Дата сообщения: 14.12.2012 20:00
Sutar

Цитата:
Как мне получить его?

вы документацию к функции preg_match читали? посмотрите, что является третьим аргументом функции
Автор: Sutar
Дата сообщения: 14.12.2012 22:35
Cheery

Цитата:
вы документацию к функции preg_match читали? посмотрите, что является третьим аргументом функции






matches, это то что мне нужно? Каким будет код?
Автор: Cheery
Дата сообщения: 14.12.2012 23:26
Sutar

Цитата:
Каким будет код?

ну там же есть примеры.. ну научитесь же хоть немного самостоятельно работать

Страницы: 12345678910111213141516171819202122232425262728293031323334

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


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