Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39

Рандомная регулярка

24.01.2011, 18:30. Показов 3738. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать на php возможно с помощью регулярных выражений

Задача
Нужно к емайл адресу рандомно добавить 5 символов. Т.е.

Емеется почта вида pochta@mail.ru Нужно сгенерировать вида pochta+xxxxx@mail.ru
+ - это разделитель
xxxxx - это рандомные пять знаков цифры плюс буквы.

Что должно получиться:
Мы указываем емайл скрипт должен сгенерировать например 100 емайлов вида pochta+xxxxx@mail.ru и сохранить их в .txt файлик.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2011, 18:30
Ответы с готовыми решениями:

Регулярка
Друзья, прошу помощи, вопрос из теста. С регуляркой дружу не очень Вопрос: Запишите шаблон (без разделителей /), которому бы...

Регулярка
Подскажите регулярку для извлечения из $_SERVER=="/sssssssss/rrrrrrr/ddddddd/wwwwwwwww/index.php" только строки ...

регулярка
добрый вечер подскажите как правильно составить регулярное вырожение имея строку alt='текст' title='текст' /> заменить её на ...

31
Йошь-мыслитель
 Аватар для Xander Bass
126 / 120 / 26
Регистрация: 22.02.2009
Сообщений: 706
Записей в блоге: 5
25.01.2011, 00:18
Как вариант:
PHP
1
2
$_random = 'hjkhj1';
$_outstr = preg_replace('([\w\-\.]+)@','\1'.$_random.'@',$_instr);
В $_random пишете Вашу рандомную строку.
1
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
25.01.2011, 10:37  [ТС]
Цитата Сообщение от Xander Bass Посмотреть сообщение
Как вариант:
PHP
1
2
$_random = 'hjkhj1';
$_outstr = preg_replace('([\w\-\.]+)@','\1'.$_random.'@',$_instr);
В $_random пишете Вашу рандомную строку.
Получиться один емайл(нужно чтоб много)?

Видимо такой pochta+hjkhj1@mail.ru?

А чтоб указать можно было например 10 или 100 сколько укажешь столько чтоб сгенерировал.
0
 Аватар для Sonax
350 / 76 / 10
Регистрация: 13.10.2010
Сообщений: 830
25.01.2011, 10:59
Можно создать массив с допустимыми символами $arr=array('a','b','c'...) и потом просто делать
PHP
1
2
3
4
5
6
7
8
for($i=1;$i<=100;$i++){
$rand=$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))];
$email_address="pochta+$rand@mail.ru";
//дальше запись в файл, write() используйте
//Можно просто вывод на экран сделать, тогда делаем следующее
$end.=$email_address."<br>\n"
}
echo $end;
1
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
25.01.2011, 12:44  [ТС]
Хм... запускаю, ему скобка не нравится.

Parse error: syntax error, unexpected '}' in /home/_/public_html/_/php.php on line 8

PHP
1
2
3
4
5
6
7
8
9
for($i=1;$i<=100;$i++){
$arr=array('a','b','c','q','w','e','r','t','y','u','i','o','p','s','d','f','g','h','j','k','l','z','x','v','n','m','1','2','3','4','5','6','7','8','9','0',);
$rand=$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))];
$email_address="pochta+$rand@mail.ru";
//дальше запись в файл, write() используйте
//Можно просто вывод на экран сделать, тогда делаем следующее
$end.=$email_address."<br>\n"
}
echo $end;
вроде все на месте.
0
 Аватар для Sonax
350 / 76 / 10
Регистрация: 13.10.2010
Сообщений: 830
25.01.2011, 13:56
Ну значит где то открыта выше ещё скобка. Выкладывай весь файл
0
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
25.01.2011, 14:28  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
for($i=1;$i<=100;$i++){
$arr=array('a','b','c','q','w','e','r','t','y','u','i','o','p','s','d','f','g','h','j','k','l','z','x','v','n','m','1','2','3','4','5','6','7','8','9','0',);
$rand=$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))].$arr[gmp_random(count($arr))];
$email_address="pochta+$rand@mail.ru";
//дальше запись в файл, write() используйте
//Можно просто вывод на экран сделать, тогда делаем следующее
$end.=$email_address."<br>\n"
}
echo $end;
?>
Вот весь.
0
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
25.01.2011, 14:44
sssd, ему не скобка не нравиться
а нет точки с запятой на строке 8
PHP
1
2
3
//Можно просто вывод на экран сделать, тогда делаем следующее
$end.=$email_address."<br>\n";
}
лучше вместо count() используйте sizeof() скорость его быстрее
1
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
25.01.2011, 14:53  [ТС]
Поставил точку с запятой, теперь
Fatal error: Call to undefined function gmp_random() in on line 4
0
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
25.01.2011, 15:29
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function mRand() {
    $arr=array('a','b','c','q','w','e','r','t','y','u','i','o','p','s','d','f','g','h','j','k','l','z','x','v','n','m','1','2','3','4','5','6','7','8','9','0');
    $r = "";
    for ($i=0; $i<5; $i++) {
        $r.= $arr[rand(0, sizeof($arr)-1)];
    }
    return $r;
}
 
$email = "user@domen.ru";
for($i=0;$i<=100;$i++){
    $mail[$i] = preg_replace('/(.*?)@(.*?)\.(.*?)/s', '${1}+'.mRand().'@${2}.${3}', $email);
}
echo "<pre>";
print_r($mail);
?>
Добавлено через 12 секунд
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function mRand() {
    $arr=array('a','b','c','q','w','e','r','t','y','u','i','o','p','s','d','f','g','h','j','k','l','z','x','v','n','m','1','2','3','4','5','6','7','8','9','0');
    $r = "";
    for ($i=0; $i<5; $i++) {
        $r.= $arr[rand(0, sizeof($arr)-1)];
    }
    return $r;
}
 
$email = "user@domen.ru";
for($i=0;$i<=100;$i++){
    $mail[$i] = preg_replace('/(.*?)@(.*?)\.(.*?)/s', '${1}+'.mRand().'@${2}.${3}', $email);
}
echo "<pre>";
print_r($mail);
?>
1
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
25.01.2011, 15:36  [ТС]
Sulik78, работает.

Только вывод уж очень страшный.

Array
(
[0] => user+2zut5@domen.ru
[1] => user+uqg8t@domen.ru
[2] => user+q9b7l@domen.ru
[3] => user+rivtl@domen.ru
[4] => user+j2ji7@domen.ru
[5] => user+0rh9d@domen.ru

Как эти добавки убрать чтоб только список емайлов был и все без всяких [0] => таких?
0
 Аватар для Sonax
350 / 76 / 10
Регистрация: 13.10.2010
Сообщений: 830
25.01.2011, 20:53
$r = ""; не обязательно писать.

Добавлено через 7 минут
Цитата Сообщение от sssd Посмотреть сообщение
Sulik78, работает.

Только вывод уж очень страшный.

Array
(
[0] => user+2zut5@domen.ru
[1] => user+uqg8t@domen.ru
[2] => user+q9b7l@domen.ru
[3] => user+rivtl@domen.ru
[4] => user+j2ji7@domen.ru
[5] => user+0rh9d@domen.ru

Как эти добавки убрать чтоб только список емайлов был и все без всяких [0] => таких?
PHP
1
2
3
foreach($arr as $key=>$value){
echo $value."<br>\n";
}
0
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
25.01.2011, 21:20
Цитата Сообщение от Sonax Посмотреть сообщение
$r = ""; не обязательно писать.
error_reporting = E_ALL ?

Добавлено через 20 секунд
Цитата Сообщение от Sonax Посмотреть сообщение
$r = ""; не обязательно писать.
error_reporting = E_ALL ?

Добавлено через 13 минут
Цитата Сообщение от sssd Посмотреть сообщение
Как эти добавки убрать чтоб только список емайлов был и все без всяких [0] => таких?
echo implode("<br>", $mail);

Добавлено через 24 секунды
Цитата Сообщение от sssd Посмотреть сообщение
Как эти добавки убрать чтоб только список емайлов был и все без всяких [0] => таких?
echo implode("<br>", $mail);
0
Йошь-мыслитель
 Аватар для Xander Bass
126 / 120 / 26
Регистрация: 22.02.2009
Сообщений: 706
Записей в блоге: 5
25.01.2011, 21:26
Цитата Сообщение от sssd Посмотреть сообщение
Получиться один емайл(нужно чтоб много)?
sssd, Вы внимательно мой пост читали?!
Цитата Сообщение от Xander Bass Посмотреть сообщение
В $_random пишете Вашу рандомную строку
В приведённом мной алгоритме вместо примера (да, да, это был всего лишь пример!) строки Вы можете написать сколь угодно сложный алгоритм. Можете хоть "войну и мир" считать из файла и записать в переменную $_random.
0
 Аватар для Sonax
350 / 76 / 10
Регистрация: 13.10.2010
Сообщений: 830
25.01.2011, 21:37
Цитата Сообщение от Sulik78 Посмотреть сообщение
error_reporting = E_ALL ?
Да, ошибок не выдаёт. Попробуй
0
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
26.01.2011, 02:41
Sonax, хм странно у меня всегда на такой Notice выдавало так как строки то изначально нет а мы к ней пытаемся добавить или может я не так понимаю.
в этих записях разница есть?
PHP
1
2
$str = $str."111";
$str .= "111";
0
 Аватар для Sonax
350 / 76 / 10
Регистрация: 13.10.2010
Сообщений: 830
26.01.2011, 11:36
В этих нет. я для себя понял, что по умолчанию люая переменная имеет "" пустую строку, вот попробуй в php скрипте написать
PHP
1
2
3
if($asdfsaibijao=="") echo "по умолчанию переменная пуста";
//или так
if(empty($asdfsaibijao)) echo "по умолчанию переменная пуста";
0
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
26.01.2011, 12:44
Sonax, хм. по умолчанию нет переменной.
т.е. если я обрашаюсь к переменной
PHP
1
$var2 = $var1;
увижу Notice: Undefined variable: var1 in ...
потому как переменная не задана.
чтобы не голословным вот что выдал твой код:
PHP
1
2
3
if($asdfsaibijao=="") echo "по умолчанию переменная пуста";
//или так
if(empty($asdfsaibijao)) echo "по умолчанию переменная пуста";
HTML5
1
2
Notice: Undefined variable: asdfsaibijao in Z:\home\bk\www\index.php  on line 2
по умолчанию переменная пустапо умолчанию переменная пуста
соответственно если у тебя нет notice то это значит php.ini
HTML5
1
2
error_reporting не равно E_ALL
а скорее всего error_reporting = E_ALL & ~E_NOTICE так по умолчанию в denwer
не удивлюсь если у тебя и $var1[key] = 1; не выдаст ошибок.
0
 Аватар для Sonax
350 / 76 / 10
Регистрация: 13.10.2010
Сообщений: 830
26.01.2011, 17:56
видимо так. Попробую позже включить
PHP
1
error_reporting = E_ALL & ~E_NOTICE;
Добавлено через 42 минуты
Включил сейчас и ужаснулся, у меня столько тут ошибок)) Сейчас всё исправлять буду

Добавлено через 25 минут
Ууу, у меня вообще в стиле сразу много ошибок "незначительных". Но я буду стиль менять, хоть это уже менее интересно.
0
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
26.01.2011, 18:09
Sonax, я тоже помню на денвере первый раз cms написал. потом узнал что там не все ошибки показаны, включил и выкинул cms эту нафиг, а щас бывает попадется код какой нибудь, который давно писал пипец смешно как, пятьсот циклов в них еще столько же и т.д. )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2011, 18:09
Помогаю со студенческими работами здесь

регулярка
не первый год занимаюсь php а регулярные выражения ни как не даются:cry: Но не об этом. Суть следующая есть строка &quot;антипригарный...

Регулярка
print_r(preg_replace('#page-#ismU', '', $_SERVER)); page-1, page -ок, но когда порядковый номер двухзначный. например page-11,...

Регулярка
Всем доброе время суток! у меня вопрос не могу сообразить как исследователь такую конструкцию! есть шаблон такого вида Ехал грека...

не работает регулярка (
if (preg_match( '/(^\/)(\w+)(\/)page(\/$)?/' , $getServer )) Это то как я пробую. Нифига не работает Нужно регулярное выражение на...

Регулярка по логам
Доброго времени суток. Нужно выдрать из логов одной игры определенные данные. В файле может быть до 15к строк. Все строки похожи: ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru