Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
[PHP] preg_match_all -- возврат рандомного массива |

20.10.2009, 17:40
|
|
Познающий
Регистрация: 04.04.2009
Сообщений: 58
Провел на форуме: 687854
Репутация:
19
|
|
[PHP] preg_match_all -- возврат рандомного массива
Короче есть регулярка, т.к. она находится в функции, необходимо чтобы каждый раз разные значения ложились в РАЗНЫЕ массивы. Сделал рандомизацию (в коде обозначена как rand_str).
Так вот, регулярка ложит в массив значения. Каким образом можно получить масссив, куда она ложит значения?
Напомню, ф-ия в preg_match_all стандартном виде выглядит так:
preg_match_all(шаблон, где ищем, КУДА ЛОЖИМ) -- здесь КУДА ЛОЖИМ должен быть всегда разным, чтобы функция имела смысл. Иначе, она будет всё складывать в один массив.
моя функция:
PHP код:
function grab_regexp($inf, $pattern)
{
preg_match_all($pattern, $inf, $array.rand_str(2, "_012"));
##собственно вот эту $array.rand_str(2, "_012") и необходимо получить ##при каждом выполнении функции
return $array;
}
|
|
|

20.10.2009, 22:34
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Dark_Scorpicore долго читать про область видимости переменных и забыть про онанизм с rand_str
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
|
|
|

20.10.2009, 23:16
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
например так:
PHP код:
<pre>
<?php
@set_time_limit(0);
@ini_set("display_errors","1");
function grab_regexp($pattern,$inf) {
preg_match($pattern, $inf, $array);
return $array;
}
$str = "this123 some12 text12 as4 192.145.85.123 and wil12 posisble 111.222.333.444";
$pat= '/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/is';
$i = 0;
while ($i<3) {
$a[$i] = grab_regexp($pat,$str);
echo $a[$i][1] . "\n";
$str = str_replace($a[$i][1],"",$str);
$i++;
}
?>
</pre>
т.е. функция стандартная, а вот её применять её просто нужно правильно, тогда и массивы будут разные, и нерандомные названия, и к ним всегда можно будет обратиться
|
|
|

21.10.2009, 00:24
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от Dark_Scorpicore
Короче есть регулярка, т.к. она находится в функции, необходимо чтобы каждый раз разные значения ложились в РАЗНЫЕ массивы. Сделал рандомизацию (в коде обозначена как rand_str).
Так вот, регулярка ложит в массив значения. Каким образом можно получить масссив, куда она ложит значения?
Напомню, ф-ия в preg_match_all стандартном виде выглядит так:
preg_match_all(шаблон, где ищем, КУДА ЛОЖИМ) -- здесь КУДА ЛОЖИМ должен быть всегда разным, чтобы функция имела смысл. Иначе, она будет всё складывать в один массив.
моя функция:
PHP код:
function grab_regexp($inf, $pattern)
{
preg_match_all($pattern, $inf, $array.rand_str(2, "_012"));
##собственно вот эту $array.rand_str(2, "_012") и необходимо получить ##при каждом выполнении функции
return $array;
}
Ох я чуть мозг несломал,пока непонял почему в один и тотже массив будет писать функция.Но когда понял это,я понял еще и что кое кто тут ***** и нечитает книжки.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|