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

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

Автор: Cheery
Дата сообщения: 02.02.2014 23:46
maxus5578
значит привели не тот кусок текста - с ним у меня работает
Автор: maxus5578
Дата сообщения: 03.02.2014 01:24
Cheery
спасибо за помощь. Сколько не смотрел уроков не как не пойму что значат вот эти рег.выражения?
'. ' почему тут без скобок?
[^>]* почему вы заменили это вместо alt?
.*'.' почему тут без скобок?
Автор: Cheery
Дата сообщения: 03.02.2014 01:27
maxus5578

Цитата:
'. ' почему тут без скобок?

каких скобок? круглых? если вы не собираетесь как то выделять этот кусок или использовать еще раз, то скобки не нужны


Цитата:
[^>]*

чтобы не писать много всего ненужного. это выберет все до > и не важно что там будет написано.


Цитата:
.*'.' почему тут без скобок?

читайте выше.
Автор: xerpal
Дата сообщения: 19.02.2014 08:26
Что-то никак не могу победить жадность, подскажите, где лажаю?
Ест строка вида
$ss="Имя поля1: значение поля1;Имя поля2: значение поля2;Имя поля3: значение поля3;Имя поля4: значение поля4;" и так далее.
Через ereg пытаюсь выцепить "значение поля2".
Пишу $res=ereg("(Имя поля2: (.*);)",$ss, $matches);
В matches в итоге
Array
(
[0] => Имя поля2: значение поля2; Имя поля3: значение поля3 ; Имя поля4: значение поля4;
[1] => Имя поля2: значение поля2; Имя поля3: значение поля3 ; Имя поля4: значение поля4;
[2] => значение поля2; Имя поля3: значение поля3; Имя поля4: значение поля4
)
Как получить отдельное значение поля2? Ниче не помогает. Вопросительный знак после (.*)

PS Блин, стоило заменить ereg на preg_match - как все заработало ((
Автор: Cheery
Дата сообщения: 19.02.2014 08:30
xerpal
об ereg нужно забыть вообще.

Цитата:
This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
Автор: xerpal
Дата сообщения: 19.02.2014 09:16
Cheery
Я просто почему то был уверен, что у них разный язык регулярки - а у preg сложнее. Оказалось, что они как-то совместимы
Автор: usertum
Дата сообщения: 16.03.2014 22:54
Доброй ночи.

Помогите пожалуйста с регуляркой для получения информации из http://nb-plus.ru/index.php?route=product/search&filter_name=hp

В табличку вида:

ТИП Модель (активная ссылка на подроб стр) наличие цена

Клавиатуры → HP Mini 1000 (Черная) В наличии 1060 р.
Клавиатуры → HP Compaq CQ60 (Черная) В наличии 3000 р.

Спасибо )
Автор: Cheery
Дата сообщения: 16.03.2014 23:15
usertum
ну, к примеру, так

Код: preg_match_all('/<div class="name">\s+<strong>(?<type>[^<>]+)<.*<a[^>]+>(?<name>[^<>]+)<.*<div class="alice"><[^<>]+>(?<available>[^<>]+)<.*<div class="price-box">(?<price>[^<>]+)</Uuis', $data, $matches);
Автор: usertum
Дата сообщения: 17.03.2014 08:11
Подскажите пожалуйста как захватить URL на описание тоже в массив? что то вида <URL>.
Автор: Cheery
Дата сообщения: 17.03.2014 08:14
usertum
ну так говорите сразу, что вам нужно.

<strong>(?<type>[^<>]+)<.*<a href="(?<url>[^"]+)">(?<name>[^<>]+)
не проверял
Автор: usertum
Дата сообщения: 08.06.2014 18:20
Добрый вечер, пишу вывод навигации.

Подскажите пожалуйста регулярное выражения, для получения под директорий.

Данные вида http://site.ru/dir/dir2/index.html

В переменные нужно получить dir, dir2 итд (все директории в URL в разные переменные)
Автор: Vitus_Bering
Дата сообщения: 08.06.2014 19:22
usertum

Код:
$s = 'http://site.ru/dir/dir2/index.html';

if ( preg_match("'^((http://.+?dir/)dir2/)index\.html$'", $s, $match_arr) ) {

$dir = $match_arr[2]; // будет http://site.ru/dir/
$dir2 = $match_arr[1]; // будет http://site.ru/dir/dir2/

echo "$dir $dir2";
}
Автор: usertum
Дата сообщения: 12.06.2014 14:46
Спасибо.
Вот только имена директорий меняются... возможно сделать регулярку "универсальной", без привязки к имени...
Автор: Vitus_Bering
Дата сообщения: 15.06.2014 15:01
usertum

Без привязки к имени директории

Код:
if ( preg_match("'^((http://.+?/).+?/)index\.html$'", $s, $match_arr) ) {
Автор: usertum
Дата сообщения: 22.06.2014 14:52
Спасибо. Вот только корректный вывод сделать не получилось он выводит или http://site.ru/dir/dir2/index.html или http://site.ru/

<?php
$s = 'http://site.ru/dir/dir2/index.html';

    if ( preg_match("'^((http://.+?/).+?/)index\.html$'", $s, $match_arr) ) {

$dir = $match_arr[0]; // будет http://site.ru/dir/
$dir1 = $match_arr[1]; // будет http://site.ru/dir/dir2/
$dir2 = $match_arr[2]; // будет http://site.ru/dir/dir2/
$dir2 = $match_arr[3]; // будет http://site.ru/dir/dir2/


echo "$dir";
echo "<br>$dir1";
echo "<br>$dir2";
echo "<br>$dir3";
}
?>

http://site.ru/dir в выдаче нет..
Автор: Vitus_Bering
Дата сообщения: 23.06.2014 11:12
usertum

Код:
$s = 'http://site.ru/dir/dir2/index.html';

if ( preg_match("'^((http://.+?/.+?/).+?/)index\.html$'", $s, $match_arr) ) {

$dir = $match_arr[2]; // будет httр://site.ru/dir/
$dir2 = $match_arr[1]; // будет httр://site.ru/dir/dir2/

echo "$dir<br>$dir2";
}
Автор: Sutar
Дата сообщения: 25.10.2014 14:24
Здравствуйте, помогите сделать простой поиск текста на совпадение....
Пробовал, но результат не самый лучший((


Код: $text = "text1|text2|text3|text4|text5";
if(preg_match("/^([$text])$/i", $buffeRr))
retrun false;
Автор: Mavrikii
Дата сообщения: 25.10.2014 21:13

Цитата:
([$text])

квадратные то скобки зачем?
ну и читать что возвращает функция
Автор: Sutar
Дата сообщения: 25.11.2014 19:28
как можно получить ip (127.0.0.1) с помощью регулярных выражений с таких строк?

127.1.1.1, 127.0.0.1, 121.0.0.0
127.0.0.1, 121.0.0.0

т.е. нужно получить строку 127.0.0.1 и текста перед последней запятой
Автор: Mavrikii
Дата сообщения: 25.11.2014 19:38
Sutar
зачем тут регулярка??
$tmp = explode(',', $var);
и взять первый элемент массива

ps: как вы вообще сайты делаете, если на таком уровне мыслите.
Автор: Sutar
Дата сообщения: 25.11.2014 19:41
Mavrikii

Цитата:
как вы вообще сайты делаете, если на таком уровне мыслите.

да легко)


Цитата:
зачем тут регулярка??

если брать первый елемент в первом примере будет правильно. а в втором, уже не то возьму....

может брать елемент с номером count($tmp)-1 ??
Автор: Mavrikii
Дата сообщения: 25.11.2014 19:46
Sutar

Цитата:
может брать елемент с номером count($tmp)-1 ??

тогда уж -2, но проверив сначала количество элементов в массиве. вдруг там один вообще.


Цитата:
да легко)

тут гордиться, к сожалению, нечему. я бы, взглянув на такой код, не предложил работу.
но все зависит от потребностей и понимания работодателя.
Автор: Vitus_Bering
Дата сообщения: 25.11.2014 21:33
Sutar


Код:
if ( preg_match("'^.*(127\.0\.0\.1)\,.*$'", $s, $match_arr) ) {
$result = $match_arr[1];
}
Автор: Mavrikii
Дата сообщения: 25.11.2014 21:34
Vitus_Bering
перечитайте внимательно о чем вообще шла речь.
Автор: Vitus_Bering
Дата сообщения: 26.11.2014 07:28
Mavrikii
Набираешь посты, делая пустые замечания.

Цитата:
перечитайте внимательно о чем вообще шла речь.

Об этом и речь:

Код: Если
$s = '127.1.1.1, 127.0.0.1, 121.0.0.0'
или, например,
$s = '127.1.1.1, 127.8.9.10, 127.18.9.21, 127.0.0.1, 127.80.5.60, 121.0.0.0, 127.11.7.15'

if ( preg_match("'^.*(127\.0\.0\.1)\,.*$'", $s, $match_arr) ) {
$result = $match_arr[1];
}
то $result вернёт 127.0.0.1
Автор: Mavrikii
Дата сообщения: 26.11.2014 08:03
Vitus_Bering

Цитата:
Набираешь посты, делая пустые замечания

не смешите мои тапочки


Цитата:
не катит, если не известно какой по порядку будет 127.0.0.1 в строке.

он не ищет 127.0.0.1, он ищет второй IP с "конца", а IP софтой заглушки привел просто для примера.

будет более очевидно из этой темы накрутка голосов на сайте

какой смысл вообще в
Цитата:
if ( preg_match("'^.*(127\.0\.0\.1)\,.*$'", $s, $match_arr) ) {  
  $result = $match_arr[1];  

если вы и так "ищете" 127.0.0.1, который можно найти обычным strpos?? и даже с запятой, чтобы он не был последним.

уж где, где, а в регулярках я собаку съел.

Автор: Vitus_Bering
Дата сообщения: 26.11.2014 13:24
Mavrikii

Цитата:
который можно найти обычным strpos

Какой вопрос

Цитата:
как можно получить ip (127.0.0.1) с помощью регулярных выражений с таких строк?

такой и ответ.

Автор: Sutar
Дата сообщения: 30.11.2014 13:21
Спасибо, вопрос снят)
Автор: AZJIO
Дата сообщения: 09.12.2014 02:51
[more=Учебники регулярных выражений]Учебники
wikipedia.org - Регулярные выражения на wiki
softtime.ru - Дж. Фридл. 2-е издание
edlinsoft.blogspot.com - Регулярные выражения в .NET Framework
debugger.ru - Учимся регулярно выражаться
valera.asf.ru - Регулярные выражения
php.ru - Синтаксис регулярных выражений
php.ru - Синтаксис регулярных выражений
egexpstudio.com - Регулярные выражения для Delphi
1, 2, 3, 4 - Регулярные выражения для AutoIt

Онлайн тест регулярных выражений
regexr.com
regex101.com
regexponline.com
ryanswanson.com
rexv.org
regexpal.com
pythonregex.com

Программы
RegexBuddy / RegexMagic
Expresso
The Regex Coach
RegExp

Дополнительно
wikipedia.org - Управляющие символы
msdn.ru - Элементы языка регулярных выражений[/more]
Автор: ivanmara
Дата сообщения: 23.12.2014 09:24
Добрый день уважаемые спецы. Подскажите как составить регулярки для пары предложений.

1. Внутри html-ки есть тег:

<input type=hidden name=checkid value="96812124">

Необходимо вытащить: 96812124

2. Еще тэг в другой html-ке:

<input type=hidden name="rnd" value="19082">

Необходимо вытащить: 19082

3. ну этот тег в 3-м файле я уже попробую сделать самостоятельно:

<input type=hidden name="checkid" value="113658085">

Необходимо вытащить: 113658085

Заранее благодарен.

Страницы: 12345678910111213141516171819202122232425262728293031323334

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


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