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

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

Автор: Mamay
Дата сообщения: 11.03.2010 15:53
filarh

preg_match_all('~<font color=darkgray>([^<]*)<.*coord.htm\?([^z]*)z~isU',$s,$m);

выдаст
в $m[1] список поинтов
в $m[2] список координат

[1] => Array
(
[0] => Point111
[1] => Point111
[2] => Point111
[3] => Point111
)

[2] => Array
(
[0] => lat=41.147102&lon=13.176735&
[1] => lat=41.147102&lon=13.176735&
[2] => lat=41.147102&lon=13.176735&
[3] => lat=41.147102&lon=13.176735&
)

дальше сам цыклом соберёшь в кучу
Автор: filarh
Дата сообщения: 12.03.2010 13:49
Mamay, спасибо! Но более подробный анализ файлов показал, что иногда есть в самом начале html-ки лишняя координата, а описания типа POINT111 без координат есть вообще везде и в больших количествах. Свести вместе описание типа POINT111 и цифры не получается (координат под 3000, а надо вытащить лишь 1000, просмотреть файлов и того больше). Попытался паттерн сделать в PowerGREP, по отдельности получается вытащить и то и другое, а вот при условии когда сначала есть описание а потом через 3 строки координата - не получается.
Автор: Mamay
Дата сообщения: 13.03.2010 16:38
filarh
тогда нужно резать на блоки и уже отдельно парсить блоки
Автор: Delhin
Дата сообщения: 15.03.2010 19:06
придется повториться.

Есть текст, необходимо из него удалить подобную конструкцию:
"(текст содержащие англ. буквы)"


К примеру, есть текст:
" Этот забор поставил Sam (а также Петя), графити приндлежит нам (Dron и вася)"
Необходимо из него сделать "Этот забор поставил Sam (а также Петя), графити приндлежит нам"

Насчет preg_replace('#\(.*[a-Z]+.*\)#isU', '', $text); денвер выдает следущее:

preg_replace() [function.preg-replace]: Compilation failed: range out of order in character class at offset 7
Автор: Cheery
Дата сообщения: 15.03.2010 19:08
Delhin

Цитата:
Compilation failed: range out of order in character class at offset 7

потому что a-z
Автор: Delhin
Дата сообщения: 15.03.2010 19:28
заработало, но почему. Потомучто квалификатор i стоит?
Автор: Cheery
Дата сообщения: 15.03.2010 20:07
Delhin

Цитата:
заработало, но почему. Потомучто квалификатор i стоит?

вам ошибка сразу сказала, что нет такого диапазона букв, который идет от маленькой a до большой Z
есть два a-z и A-Z, разница между которыми заменяется модификатором i
Автор: andead
Дата сообщения: 15.03.2010 20:51
а диапазон a-Z хоть в какой-нибудь реализации регулярных выражений есть? я был уверен что где-то видел его, поэтому и поставил
Автор: usertum
Дата сообщения: 21.03.2010 01:18
Подскажите пожалуйста! Нужно регулярное выражение например если в строке есть одно из значений 1 ,2 , 3 то выполнить это, если нет то это.
Автор: Cheery
Дата сообщения: 21.03.2010 01:38
usertum
[1-3]
если просто разные значения, то
(значение1|значение2|значение3)
Автор: usertum
Дата сообщения: 21.03.2010 11:09
if (preg_match("/[(1|2.)/",$data)) { так ?
Автор: Cheery
Дата сообщения: 21.03.2010 14:37
usertum
нет
Зачем там [?
И точка после 2
Напишите внятно какие значения вас интересуют
Автор: DarkSmoke
Дата сообщения: 01.04.2010 19:47
Добрый день.
Задача нужно найти все ' />' и заменить на '>'
делаю так:

Код:
$postEditor = preg_replace("/ \/>/","",$_POST['editor']);
Автор: andead
Дата сообщения: 01.04.2010 20:01
DarkSmoke
а если так:

Код: preg_replace('/\/>/', '>', $_POST['editor']);
Автор: DarkSmoke
Дата сообщения: 13.04.2010 23:03
Добрый день.
Помогите разобратся.
Заношу в БД такой текст:

Цитата:
<ul>
        <li>
            Отношения между людьми</li>
        <li>

            Размышляя над будущим</li>

        <li>
            Понимание себя</li>
        <li>
            Настоящая дружба</li>
        <li>
            Настоящая любовь</li>

        <li>

            Проблема выбора</li>
    </ul>

перед занесением прогоняю его через регулярное выражение:

Код: $postEditor = ereg_replace(' +',' ',$postEditor);
Автор: Cheery
Дата сообщения: 13.04.2010 23:29
DarkSmoke
preg_replace, зачастую, быстрее

preg_replace('/\s+/',' ',$postEditor)

Цитата:
Это наверное табы, это играет роль?

табы - не пробелы.. так что определитесь что там у вас
Автор: Delta RuBoard
Дата сообщения: 14.04.2010 04:30
есть массив


Код: $a = ('text1', 'text2', 'text...');
Автор: Cheery
Дата сообщения: 14.04.2010 05:25
Delta RuBoard

Цитата:
просто делать циклично по каждому елементу массива не очень хочется.

почему?
ну можно сделать так
(одно выражение|второе выражение|третье выражение)
Автор: Delta RuBoard
Дата сообщения: 14.04.2010 05:31

Цитата:
почему?

незнаю, просто думал что если есть поиск по массиву то это было бы легче серверу чем 10 раз вызывать тот же прег_матч например.
Автор: DarkSmoke
Дата сообщения: 14.04.2010 08:23

Цитата:
табы - не пробелы.. так что определитесь что там у вас

Табы. Не нашел как они обозначаются.
Автор: Cheery
Дата сообщения: 14.04.2010 19:33
DarkSmoke

Цитата:
Не нашел как они обозначаются.

\t
Автор: DarkSmoke
Дата сообщения: 15.04.2010 09:41
Гугл молчит, яндекс тоже. Как убрать повторяющиеся табы?
Автор: Delta RuBoard
Дата сообщения: 15.04.2010 14:51
тебе же Cheery написал уже для пробелов

Цитата:
preg_replace('/\s+/',' ',$postEditor)


вместо \s ставь \t
Автор: Mamay
Дата сообщения: 16.04.2010 14:28
Rendom
preg_replace('~<table.*?UNIQTEXT.*?</table>~', '', $s);

ыы, ступил )
Автор: Delta RuBoard
Дата сообщения: 21.04.2010 04:45
Mamay
вначале думал что оно будет вырезать абсолютно все %) обьясни плиз принцип по которому твоя регулярка выбирает именно нужный кусок кода, а не например


Код: <table border=0>
<tr>
<td>blablablabla<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table>
Автор: Cheery
Дата сообщения: 21.04.2010 05:32
Delta RuBoard

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


Цитата:
.*?

? - модификатор "жадности"
аналогично можно написать /регулярка с */U - "ungreedy"
Автор: Mamay
Дата сообщения: 21.04.2010 12:27
Delta RuBoard
жадность это наше всё )
и такие куски кода следует вырезать именно таким способом
потому как мы получаем наименьшее число сравнений
Автор: DarkSmoke
Дата сообщения: 27.04.2010 12:59
Помогите составить регулярное выражение:

Код: $buff = ereg_replace('{TITLE}', $title, $buff);
Автор: andead
Дата сообщения: 27.04.2010 13:11
DarkSmoke

Код: $buff = str_replace('{TITLE}', $title, $buff);
Автор: Mamay
Дата сообщения: 30.04.2010 17:51
тут вот написал одну регу, может кому пригодится
задача была заменить парные &lt; &gt; на <>
именно парные, потому html_entity_decode не подходил...
собственно сама рега


Код: $s = '&gt;&lt;&lt;input type="text" name="test" value="8"&gt;&lt;&gt;
&gt;&lt;&lt;input type="text" name="test" value="8"&gt;&lt;&gt;
&gt;&lt;&lt;input type="text" name="test" value="8"&gt;&lt;&gt;
';

echo preg_replace('~(&lt;)([^&]+)(&gt;)~isu','<$2>',$s);

Страницы: 12345678910111213141516171819202122232425262728293031323334

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


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