Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: RegExp
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
sssd
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
1

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

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

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

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

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

Что должно получиться:
Мы указываем емайл скрипт должен сгенерировать например 100 емайлов вида pochta+xxxxx@mail.ru и сохранить их в .txt файлик.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2011, 18:30
Ответы с готовыми решениями:

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

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

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

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

Регулярка
Подскажите регулярку для извлечения из...

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

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

А чтоб указать можно было например 10 или 100 сколько укажешь столько чтоб сгенерировал.
0
Sonax
349 / 75 / 9
Регистрация: 13.10.2010
Сообщений: 829
25.01.2011, 10:59 4
Можно создать массив с допустимыми символами $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
sssd
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
25.01.2011, 12:44  [ТС] 5
Хм... запускаю, ему скобка не нравится.

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
349 / 75 / 9
Регистрация: 13.10.2010
Сообщений: 829
25.01.2011, 13:56 6
Ну значит где то открыта выше ещё скобка. Выкладывай весь файл
0
sssd
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
25.01.2011, 14:28  [ТС] 7
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
Сообщений: 646
25.01.2011, 14:44 8
sssd, ему не скобка не нравиться
а нет точки с запятой на строке 8
PHP
1
2
3
//Можно просто вывод на экран сделать, тогда делаем следующее
$end.=$email_address."<br>\n";
}
лучше вместо count() используйте sizeof() скорость его быстрее
1
sssd
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
25.01.2011, 14:53  [ТС] 9
Поставил точку с запятой, теперь
Fatal error: Call to undefined function gmp_random() in on line 4
0
Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 646
25.01.2011, 15:29 10
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
sssd
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 39
25.01.2011, 15:36  [ТС] 11
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
349 / 75 / 9
Регистрация: 13.10.2010
Сообщений: 829
25.01.2011, 20:53 12
$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
Сообщений: 646
25.01.2011, 21:20 13
Цитата Сообщение от 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
Йошь-мыслитель
121 / 115 / 25
Регистрация: 22.02.2009
Сообщений: 677
Записей в блоге: 5
25.01.2011, 21:26 14
Цитата Сообщение от sssd Посмотреть сообщение
Получиться один емайл(нужно чтоб много)?
sssd, Вы внимательно мой пост читали?!
Цитата Сообщение от Xander Bass Посмотреть сообщение
В $_random пишете Вашу рандомную строку
В приведённом мной алгоритме вместо примера (да, да, это был всего лишь пример!) строки Вы можете написать сколь угодно сложный алгоритм. Можете хоть "войну и мир" считать из файла и записать в переменную $_random.
0
Sonax
349 / 75 / 9
Регистрация: 13.10.2010
Сообщений: 829
25.01.2011, 21:37 15
Цитата Сообщение от Sulik78 Посмотреть сообщение
error_reporting = E_ALL ?
Да, ошибок не выдаёт. Попробуй
0
Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 646
26.01.2011, 02:41 16
Sonax, хм странно у меня всегда на такой Notice выдавало так как строки то изначально нет а мы к ней пытаемся добавить или может я не так понимаю.
в этих записях разница есть?
PHP
1
2
$str = $str."111";
$str .= "111";
0
Sonax
349 / 75 / 9
Регистрация: 13.10.2010
Сообщений: 829
26.01.2011, 11:36 17
В этих нет. я для себя понял, что по умолчанию люая переменная имеет "" пустую строку, вот попробуй в php скрипте написать
PHP
1
2
3
if($asdfsaibijao=="") echo "по умолчанию переменная пуста";
//или так
if(empty($asdfsaibijao)) echo "по умолчанию переменная пуста";
0
Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 646
26.01.2011, 12:44 18
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
349 / 75 / 9
Регистрация: 13.10.2010
Сообщений: 829
26.01.2011, 17:56 19
видимо так. Попробую позже включить
PHP
1
error_reporting = E_ALL & ~E_NOTICE;
Добавлено через 42 минуты
Включил сейчас и ужаснулся, у меня столько тут ошибок)) Сейчас всё исправлять буду

Добавлено через 25 минут
Ууу, у меня вообще в стиле сразу много ошибок "незначительных". Но я буду стиль менять, хоть это уже менее интересно.
0
Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 646
26.01.2011, 18:09 20
Sonax, я тоже помню на денвере первый раз cms написал. потом узнал что там не все ошибки показаны, включил и выкинул cms эту нафиг, а щас бывает попадется код какой нибудь, который давно писал пипец смешно как, пятьсот циклов в них еще столько же и т.д. )
0
26.01.2011, 18:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2011, 18:09

Регулярка
print_r(preg_replace('#page-#ismU', '', $_SERVER)); page-1, page -ок, но...

Регулярка на цифры
Всем привет. Помогите составить регулярку, проверяющая строку на существования...

Простая регулярка
Здравствуйте! Не могу написать регулярку. Есть шаблон - user_id=. И нужно в...


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

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

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