PDA

Просмотр полной версии : [PHP] preg_match_all -- возврат рандомного массива


Dark_Scorpicore
20.10.2009, 17:40
Короче есть регулярка, т.к. она находится в функции, необходимо чтобы каждый раз разные значения ложились в РАЗНЫЕ массивы. Сделал рандомизацию (в коде обозначена как rand_str).
Так вот, регулярка ложит в массив значения. Каким образом можно получить масссив, куда она ложит значения?
Напомню, ф-ия в preg_match_all стандартном виде выглядит так:

preg_match_all(шаблон, где ищем, КУДА ЛОЖИМ) -- здесь КУДА ЛОЖИМ должен быть всегда разным, чтобы функция имела смысл. Иначе, она будет всё складывать в один массив.

моя функция:

function grab_regexp($inf, $pattern)
{
preg_match_all($pattern, $inf, $array.rand_str(2, "_012"));
##собственно вот эту $array.rand_str(2, "_012") и необходимо получить ##при каждом выполнении функции
return $array;
}

Gifts
20.10.2009, 22:34
Dark_Scorpicore долго читать про область видимости переменных и забыть про онанизм с rand_str

Pashkela
20.10.2009, 23:16
например так:


<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>


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

m0Hze
21.10.2009, 00:24
Короче есть регулярка, т.к. она находится в функции, необходимо чтобы каждый раз разные значения ложились в РАЗНЫЕ массивы. Сделал рандомизацию (в коде обозначена как rand_str).
Так вот, регулярка ложит в массив значения. Каким образом можно получить масссив, куда она ложит значения?
Напомню, ф-ия в preg_match_all стандартном виде выглядит так:

preg_match_all(шаблон, где ищем, КУДА ЛОЖИМ) -- здесь КУДА ЛОЖИМ должен быть всегда разным, чтобы функция имела смысл. Иначе, она будет всё складывать в один массив.

моя функция:

function grab_regexp($inf, $pattern)
{
preg_match_all($pattern, $inf, $array.rand_str(2, "_012"));
##собственно вот эту $array.rand_str(2, "_012") и необходимо получить ##при каждом выполнении функции
return $array;
}

Ох я чуть мозг несломал,пока непонял почему в один и тотже массив будет писать функция.Но когда понял это,я понял еще и что кое кто тут ***** и нечитает книжки.