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

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

Автор: Sutar
Дата сообщения: 04.03.2013 22:49
Cheery

Код: "#^[А-Я\sа-я\s0-9\sі\sё\sЁ]{2,32}$#u"
Автор: Cheery
Дата сообщения: 04.03.2013 22:53
Sutar
1) [] означает набор символов, поэтому повторения \s не нужно
2) а попробовать?
Автор: Sutar
Дата сообщения: 04.03.2013 23:31
Cheery
понял, спасибо.
щас будем проверять)
Автор: Cheery
Дата сообщения: 04.03.2013 23:33
Sutar

Цитата:
тогда где ставить \s?

где угодно, но одну.
Автор: Sutar
Дата сообщения: 04.03.2013 23:35
Cheery
Можете сказать каких символов с Русского и Украинского алфавита, в периоде php А-я нету?
Автор: Cheery
Дата сообщения: 04.03.2013 23:38
Sutar
протестируйте ))
возьмите алфавит в строку и сделайте из него выборку с помощью регулярного выражения.. тех символов, что не входят в период
то есть, к примеру
#[^а-я]#i
так и увидите, что не входит
Автор: Sutar
Дата сообщения: 04.03.2013 23:43
Cheery
Всё, спасибо большое)
Автор: Cheery
Дата сообщения: 04.03.2013 23:49
Sutar

Цитата:
Добавил пробел в строчку, и результат false

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


Код: $text = "йцукенг шщзхїфівапролджєячсмитьбю";
preg_match_all('#[^а-я\s]#u', $text, $m);
header('Content-Type: text/html; charset=UTF-8');
var_dump($m);
Автор: vof4ikWP
Дата сообщения: 06.03.2013 19:07
Здравствуйте.
Задача следующая, что-то я застрял...
Необходимо проверить php код на наличие html вставок.
Например у меня есть такая строка.

Код: $a = '<b>text</b>';
Автор: Cheery
Дата сообщения: 06.03.2013 19:09
vof4ikWP

Цитата:
У кого какие мысли?

получаете все теги и их содержимое, а потом проверяете, что тег не находится в массиве разрешенных
Автор: vof4ikWP
Дата сообщения: 06.03.2013 21:12
всего лишь 91 тег в 4 html, действительно проще сделать так. Спасибо
Автор: AftarJjet
Дата сообщения: 05.04.2013 05:45
Реально ли создать такое выражение, чтобы удалить, например, майлы такого вида - vnxvnxvnds4345ssfs@gmail.com, а такого - hornioh@gmail.com оставить?
Т.е., удалить записи, которые созданы явно искусственно? Может, есть где-то теоретические наработки?

Добавлено:
Хотя, это невозможно, я так понимаю. Нужен огромный словарь, лексический и морфологический разбор, и т.д.
Автор: Cheery
Дата сообщения: 05.04.2013 05:54
AftarJjet

Цитата:
Нужен огромный словарь, лексический и морфологический разбор

именно. регулярки тут уже не при чем.
Автор: zondex
Дата сообщения: 03.05.2013 19:52
Здраствуйте!

Дано: HTML код(таблица), ниже содержимое одной из строк таблицы:

<tr><td bgcolor=#ffffff><font class=nickname>8. <b>Название предмета</b> <font class=weaponch>(Доп.Инфо)</font> <b><font color=#BB0000>999</font></b></td><td bgcolor=#ffffff><div align=center><font class=weaponch><b>test</div></td><td bgcolor=#ffffff><div align=center><font class=weaponch><b>Производительность:</b> 450/450</div></td><td bgcolor=#ffffff><div align=center><font class=weaponch><b><font color=#00A80C>открыт</font></div></td><td bgcolor=#ffffff><div align=center><input type=button class=invbut onclick="location='main.php?get_id=1&uid=44016042&wmas=8&nick=test&code=fa16fa393f91418fcccb2865459d32f7&useaction=clan-action&addid=3'" value="Взять предмет"></div></td></tr>

Необходимо: с помощью регулярного выражения, путем подстановки числового выражения в переменную uid находить в таблице необходимую строку.

Что смог накодить:
<pre>
<?

$res = file_get_contents('01.txt');
$a="44898330";
$item = explode("\n", $a);

while( count($item) > 0)
{
$get_item = array_pop($item);
if(preg_match_all("#\d+\. <b>(.+)</b>.+<input type=button class=invbut onclick=\"(.+uid={$get_item}&wmas=\d+&nick=.+&vcode=[a-z0-9]{32}&useaction=clan-action&addid=3)'#U", $res, $object))
$object[0]='';
print_r($object);
}

?>

Исходник и файл с таблицей:
http://upwap.ru/3099614
Автор: Grafus
Дата сообщения: 07.05.2013 18:35
Есть текст типа:

Код:
name="1"
name="2"
name="3"
name="4"
name="5"
name="6"
name="7"
Автор: Cheery
Дата сообщения: 07.05.2013 18:41
Grafus

Код: preg_replace('!name="(\d+)"!is', 'id="$1" logo="$1"', $test)
Автор: Grafus
Дата сообщения: 07.05.2013 19:37
Cheery
спс, то что нано
Автор: Grafus
Дата сообщения: 19.05.2013 08:39
А у меня вот назрел очередной вопросик.
Есть переменная $txt с текстом вида:

Код:
STAT: 0, Text 1
Description
STAT: 0, Text 1
Description
STAT: 0, Text 2
Description
STAT: 0, Text 3
Description
STAT: 0, Text 4
Description
STAT: 0, Text 5
Description
...
Автор: Cheery
Дата сообщения: 19.05.2013 08:52
Grafus
preg_replace_callback('/(STAT: )(\d+)/', function($v){static $c = 0; return $v[1] . (++$c);}, $txt);
Автор: Grafus
Дата сообщения: 19.05.2013 14:30
Cheery
А как реализовать, так что бы отсчет шел не 1,2,3,4,5,...,11,12,13,14,15,... , а 01,02,03,04,05,...,11,12,13,14,15,... ?
Автор: Cheery
Дата сообщения: 19.05.2013 20:19
Grafus
http://php.net/manual/en/function.str-pad.php
Автор: NORIO
Дата сообщения: 31.05.2013 14:43
Надо вернуть вхождение после которого как можно меньше символов до конца строки,
то есть найти и вернуть повторяющийся кусок текста находящийся последним в строке


Код: <php?

$string = '<img id="image_bakregistr_hanger" src="images/bakregistr/left_reg_h.png" style="position: absolute; top: 308px; left: 117px; z-index: 59; -webkit-transform: skewY(2deg); transform: skewY(4deg);">';

preg_match("/skewY\(\ddeg\).*?$/i" , $string, $result);

echo $result[0];

?>
Автор: Cheery
Дата сообщения: 31.05.2013 19:39
NORIO

Код: $string = '<img id="image_bakregistr_hanger" src="images/bakregistr/left_reg_h.png" style="position: absolute; top: 308px; left: 117px; z-index: 59; -webkit-transform: skewY(2deg); transform: skewY(4deg);">';

preg_match("/skewY\(\ddeg\)((?!skewY).)*$/Ui" , $string, $result);

var_dump($result);
Автор: n0byk
Дата сообщения: 03.06.2013 19:25
Нужно дописать регулярку что-бы разбирать ссылки подобного рода

youtube.com/watch?v=Uhol3aK8kEQ&list=SPJuzssrVaWjbIpmb36XabFUkiowJQQ9DH
youtube.com/watch?feature=player_embedded&v=Uhol3aK8kEQ




Код:

//youtube.com/watch?v=Uhol3aK8kEQ&list=SPJuzssrVaWjbIpmb36XabFUkiowJQQ9DH
//youtube.com/watch?feature=player_embedded&v=Uhol3aK8kEQ
$pattern =
'%^# Match any YouTube URL
(?:https?://)? # Optional scheme. Either http or https
(?:www\.)? # Optional www subdomain
(?: # Group host alternatives
youtu\.be/ # Either youtu.be,
| youtube\.com # or youtube.com
(?: # Group path alternatives
/embed/ # Either /embed/
| /v/ # or /v/
| /watch\?v= # or /watch\?v=
| /watch?feature=player_embedded&\?v= # ?????????????????????????
) # End path alternatives.
) # End host alternatives.
([\w-]{10,12}) # Allow 10-12 for 11 char YouTube id.
$%x'
;
$result = preg_match($pattern, $url, $matches);

Автор: Cheery
Дата сообщения: 03.06.2013 19:35
n0byk
разбирать на что ? вам нужен только v=?
Автор: n0byk
Дата сообщения: 03.06.2013 20:25

Цитата:
Cheery

да, только id, тоесть v=Uhol3aK8kEQ

пробовал добавить эту строчку, не получается
| /watch?feature=player_embedded&\?v= # ?????????????????????????
Автор: Cheery
Дата сообщения: 03.06.2013 21:28
n0byk

Код: $string = 'youtube.com/watch?feature=player_embedded&v=Uhol3aK8kEQ';

preg_match("/v=(\w{10,12})/Ui" , $string, $result);

var_dump($result);
Автор: n0byk
Дата сообщения: 03.06.2013 21:38
Cheery

То есть можно вот так сделать:

//youtube.com/watch?v=Uhol3aK8kEQ&list=SPJuzssrVaWjbIpmb36XabFUkiowJQQ9DH
//youtube.com/watch?feature=player_embedded&v=Uhol3aK8kEQ
$pattern =
'%^# Match any YouTube URL
(?:https?://)? # Optional scheme. Either http or https
(?:www\.)? # Optional www subdomain
(?: # Group host alternatives
youtu\.be/ # Either youtu.be,
| youtube\.com # or youtube.com
(?: # Group path alternatives
/embed/ # Either /embed/
| /v/ # or /v/
| /watch\?v= # or /watch\?v=
| /v=(\w{10,12})/Ui # youtube.com/watch?feature=player_embedded&v=
) # End path alternatives.
) # End host alternatives.
([\w-]{10,12}) # Allow 10-12 for 11 char YouTube id.
$%x'
;
$result = preg_match($pattern, $url, $matches);

А вторую строку как разобрать?
Автор: Cheery
Дата сообщения: 03.06.2013 21:50
n0byk
вы v= просили или все разбирать? или вам нужно еще отлавливать, что это youtube ссылка?
какая разница то, первая строка или вторая?

у вас все равно сейчас паттерн неправильно записан
Автор: n0byk
Дата сообщения: 03.06.2013 22:52
Cheery
с youtube видео можно взять 4 способами

Обычная ссылка: youtube.com/watch?v=pHARspTJyeY

Короткая ссылка: youtu.be/pHARspTJyeY

Ссылка из плейлиста: youtube.com/watch?v=pHARspTJyeY&list=SPJuzssrVaWjbIpmb36XabFUkiowJQQ9DH

Длинная ссылка от встроенного видео на сайте: youtube.com/watch?feature=player_embedded&v=pHARspTJyeY

Оригинал этой регулярки вытаскивает из строки pHARspTJyeY 2 верхними способами
Далее гинерируется нормальная ссылка с видео

Код:
$data['object'] = "<iframe src='http://www.youtube.com/embed/{$matches[1]}?wmode=opaque' type='text/html' width='590' height='332' frameborder='0'></iframe>";

Страницы: 12345678910111213141516171819202122232425262728293031323334

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


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