Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: RegExp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/72: Рейтинг темы: голосов - 72, средняя оценка - 4.67
javasc
6 / 5 / 2
Регистрация: 08.11.2010
Сообщений: 192
1

Вырезать часть строки, соответствующую IP-адресу

22.11.2010, 13:21. Просмотров 13139. Ответов 9
Метки нет (Все метки)

из строки , user_ip=INET_ATON(\'192.168.150.150\')
нужно вырезать 192.168.150.150 .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2010, 13:21
Ответы с готовыми решениями:

Вырезать часть строки
Нужно вырезать кусок строки по шаблону. Строка вида блаблабла - Episode *** (...

Как вырезать часть из кода страницы?
Вот сам код: <div class="scont"> <div id="news-id-15014"...

Как из строки вырезать последний сегмент?
Здравствуйте, требуется из строки вида: ...

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

Нужно вырезать Nное поле из строки
Нужно вырезать Адрес видео

9
Humanoid
Почетный модератор
9969 / 3857 / 344
Регистрация: 12.06.2008
Сообщений: 11,381
22.11.2010, 14:31 2
Просто искать 4 числа подряд? Или ориентироваться именно по "user_ip=INET_ATON(\'"?
Если первое, то
PHP
1
2
3
$s = 'user_ip=INET_ATON(\'192.168.150.150\')';
preg_match('/(\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3})/',$s,$m);
echo "{$m[1]}<br />\r\n";
Если второе, то:
PHP
1
2
3
$s = 'user_ip=INET_ATON(\'192.168.150.150\')';
preg_match("/user_ip\\=INET_ATON\\(\\'([0-9.]+)\\'\\)/i",$s,$m);
echo "{$m[1]}<br />\r\n";
Может способы не слишком хорошие, но работают.
0
Vovan-VE
13159 / 6544 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
22.11.2010, 14:54 3
Humanoid, Точки не заэкранировал
PHP
1
preg_match('/(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})/',$s,$m);
0
javasc
6 / 5 / 2
Регистрация: 08.11.2010
Сообщений: 192
22.11.2010, 17:11  [ТС] 4
спасибо.

у меня другая идея, хорошо что подсказали про экранирование (xss и sql-injection).

Помогите с регуляркой, из 192.168.150.150 удалить точки. и конечно между точками может быть от 1 до 3 цифр, это ведь ip
0
Vovan-VE
13159 / 6544 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
22.11.2010, 17:57 5
Цитата Сообщение от javasc Посмотреть сообщение
Помогите с регуляркой, из 192.168.150.150 удалить точки
PHP
1
2
3
4
5
$ip = str_replace('.', '', $ip);
// или медленне
$ip = preg_replace('/\\./', '', $ip);
// или еще НАМНОГО медленне
$ip = strtr($ip, array('.' => ''));
0
javasc
6 / 5 / 2
Регистрация: 08.11.2010
Сообщений: 192
22.11.2010, 18:13  [ТС] 6
ого!

вот вопрос вытащить цифру через регулярку так [0-9],
букву [a-zA-Z] так.

А как точку? именно не символ, не равный пробелу, а конкретно идентифицировать точку?

имею ip 192.168.150.1
пишу так:
PHP
1
preg_match("/^[0-9]{1,3}/",$post_user_ip,$post_user_ip_clear);
хочу получить первую тройку цифр.
0
Vovan-VE
13159 / 6544 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
22.11.2010, 18:23 7
Метасимвол . означает "один любой символ" (с оговорками на модификтор s). Чтобы получить символ "." , надо ее заэкранировать \. Соответвенно, в строке PHP это будет
PHP
1
'\\.'
Плюс ограничители
PHP
1
preg_match("/^[0-9]{1,3}\\./", $post_user_ip, $post_user_ip_clear);
0
javasc
6 / 5 / 2
Регистрация: 08.11.2010
Сообщений: 192
22.11.2010, 18:34  [ТС] 8
Странно, Vovan-VE.

Имею ip 192.168.150.1
пишу регулярку чтобы вытащить первые две "тройки" (назову их так) цифр:
PHP
1
preg_match("/^[0-9]{1,3}[\\.][0-9]{1,3}[\\.]/",$post_user_ip,$post_user_ip_clear);
работает.
пишу чтобы вытащить тройку троек цифр:
PHP
1
preg_match("/^[0-9]{1,3}[\\.][0-9]{1,3}[\\.][0-9]{1,3}[\\.]/",$post_user_ip,$post_user_ip_clear);
работает, выдает три тройки с изначально ip адреса.
пишу вывести четыре тройки (весь ip):
PHP
1
preg_match("/^[0-9]{1,3}[\\.][0-9]{1,3}[\\.][0-9]{1,3}[\\.][0-9]{1,3}[\\.]/",$post_user_ip,$post_user_ip_clear);
не работает, точнее вообще выдает пустой результат.

Т.е изначально дается ip, я хочу его прогнать через regexp и на выходе получить такой же ip.

p.s: Мне нужно сделать проверку ip, что это действительно ip, а не xss или sql-injection.
0
Vovan-VE
13159 / 6544 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
22.11.2010, 18:40 9
Так после 4-й тройки точки нет, там конец строки
PHP
1
preg_match("/^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$/",$post_user_ip,$post_user_ip_clear);
Можно и проще: "число, затем 3 раза (точка число)":
PHP
1
preg_match("/^\\d{1,3}(?:\\.\\d{1,3}){3}$/", $post_user_ip, $post_user_ip_clear);
0
javasc
6 / 5 / 2
Регистрация: 08.11.2010
Сообщений: 192
22.11.2010, 18:44  [ТС] 10
так сделал
PHP
1
preg_match("/^[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}/",$post_user_ip,$post_user_ip_clear);
но твой способ лучше
0
22.11.2010, 18:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2010, 18:44

Вырезать из строки совпадения с решетками и записать их в массив
Доброго времени суток. Есть строка вида: #room#-комн. квартира, #area#...

Вырезать регуляркой символы в конце строки, если она не заканчивается на "quo;"
Всем привет! Есть такой код, вырезающий из конца строки &quot;ненужные&quot; символы:...

Получить часть строки
Все не могу найти время, что бы разобраться в них. Как получить из такой строки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru