|
|
|
| Я хотел спросить а можно ли функцией explode записывать получаемые значения в массив?! То есть если у меня есть текст
user1/1234;user/4321;....../.....
И мне нада записать каждое полученное значение в соответствуюший ей массив.
Например я первым эксплодом розобью строку символом ;(точка с запятой) авсе это пишется в массив(причем я тама получаю X значений),а вторым разобью символом / (левый слеш), и выведу в два массива (напр $user_name и $user_pass).
Это в принципе достижимо?! И если нет то каким способом можно достьчь подобного?! | |
|
|
|
|
|
|
|
для: ДаньЧег
(04.01.2009 в 10:13)
| | Если используются несколько разделителей, уместнее наверное использовать preg_match_all() | |
|
|
|
|
|
|
|
для: Николай2357
(04.01.2009 в 10:32)
| | Не! Думаю не подходит!
А может разделить все это SPLITом?! Я пробовал им, но через foreach он пишет "Invalid argument supplied for foreach()"( Типа Несостоятельный довод :)), через echo пишет только первое значение.
Опредили тип, оказалось что это не массив а string!(хотя в документации четко написанно что СПЛИТ записывает именно в массив!) | |
|
|
|
|
|
|
|
для: ДаньЧег
(04.01.2009 в 16:55)
| | Никогда split() не возвращала массив. Где Вы отрыли такую документацию?
Дело, собственно, не в том какой функцией резать, а в том, что именно в строке держать.
Собственно, если хранить не сами пароли, а их кодированные значения ( а проще тогда уж - кодированные значения хешей) - explode вполне себе прокатывает. | |
|
|
|
|
|
|
|
для: Trianon
(04.01.2009 в 17:00)
| | >>Никогда split() не возвращала массив. Где Вы отрыли такую документацию?
split - делает из строки массив с помощью регулярного выражения.
Вот ссылка!
Или я их просто неправильно понял!
Но у меня есть пример гостевой книги,(писал собсна не я!) там тоже дата, имя, и сам комент брались из файла! Разделялось все темже сплитом. А выводилось обычным echo без ['']. | |
|
|
|
|
|
|
|
для: ДаньЧег
(04.01.2009 в 17:08)
| | Это я сморозил.
Вероятно, Вы перепутали параметры, и split() вернула false. false - всяко не массив.
Вообще, стоит учитывать, что split() разбивает строку по шаблону регулярного выражения, а не просто так. | |
|
|
|
|
|
|
|
для: Trianon
(04.01.2009 в 17:23)
| | А точн!
Я совсем забыл что нада по всему тексту сначала пройтись!
Перед сплитом нада добавить for($i=0;$i<=count($содеожашая текст)-1;$i++) и к разбиваемой переменной в настр эксплода нада добавить ['i']!)) | |
|
|
|
|
|
|
|
для: ДаньЧег
(04.01.2009 в 17:34)
| | А чем Вам preg_match_all() не угодила?
<?php
$a = "user/1234;user1/4321;user2/3421";
preg_match_all("#;*([^/]+)/([^;]+)#s",$a,$out);
print_r($out[1]);
print_r($out[2]);
|
| |
|
|
|
|
|
|
|
для: Николай2357
(04.01.2009 в 18:16)
| | Кстати тоже нилохо!
Я нимного изменил код
<?php
$a = "user/1234;user1/4321;user2/3421";
preg_match_all("#;*([^/]+)/([^;]+)#s",$a,$out);
echo "Users:<br>";
foreach($out[1] as $out1){
echo "$out1 ";
}
echo "<br><br>";
echo "PASS:<br>";
foreach($out[2] as $out1){
echo "$out1 ";
}
?>
|
Вот что получил на выходе:
Users:
user; user1; user2;
PASS:
1234; 4321; 3421;
ЗЫ: не юзал preg_match_all тк не особо понимаю принцип использования.Документацию читал! Мне не помогло! | |
|
|
|
|
|
|
|
для: Николай2357
(04.01.2009 в 18:16)
| | У меня не получилось СПЛИТОМ сделать нечто подобное preg_match_all(), ведь при использовании этого самого сплита нужно посчитать на скока частей делить....таким макаром, что когда функция for находит / выполняет условие: добовляет к определенной переменной одну единицу, и отделяет первые символы до введенного кхе! символа. Дальше это все повторяется, пока for находит введенный символ.....но чето тут не так..... | |
|
|
|
|
|
|
|
для: ДаньЧег
(04.01.2009 в 19:20)
| | Почемуто сплит после разделителя кушает все остальную строку!И из за этого на выходе только логин!Но не пасс.... | |
|
|
|
|
|
|
|
для: ДаньЧег
(04.01.2009 в 21:56)
| | Это из спортивного интереса или что то не подходит из моего варианта? | |
|
|
|
|
|
|
|
для: Николай2357
(04.01.2009 в 22:01)
| | В действительности только твой вариант и работает! Чтоб сделать мне своим способом нужно знать функцию переноса строки... | |
|
|
|
|
|
|
|
для: ДаньЧег
(04.01.2009 в 19:20)
| | чисто философски попробовал сплитом
<?php $res = preg_split('#([^/]+)/([^;]+);#', 'usr1/pass1;usr2/pass2;usr3root/xxx;', -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($res);
/*Array
(
[0] => usr1
[1] => pass1
[2] => usr2
[3] => pass2
[4] => usr3root
[5] => xxx
)*/
|
| |
|
|
|
|
|
|
|
для: Николай2357
(04.01.2009 в 18:16)
| | А можно как-нибудь получить из этой строки массив
"user"="1234"
"user1"="4321"
"user"="3421" | |
|
|
|
|
|
|
|
для: ДаньЧег
(04.01.2009 в 10:13)
| | в принципе - можно.
В данном случае - нет. Поскольку тем самым Вы из символов пароля исключите знаки / и ; | |
|
|
|
|
|
|
|
для: ДаньЧег
(04.01.2009 в 10:13)
| | Аффтар, как насчёт цикла foreach?
Если $array1 - это массив с теми самыми Х значений внутри.
foreach($array1 as $ind => $value)
{
$razd = explode("/",$value); // Разделяем логин и пароль
$user_name[$ind] = $razd[0]; // Помещаем логин в один массив
$user_pass[$ind] = $razd[1]; // Пароль в другой
}
|
Как-то так. (Если я тебя правильно понял)
ЗЫ: Но я не профессионал.
ЗЗЫ: И это если в паролях нет знаков ; и /, хотя в примере в твоём посте всё кайф. =) | |
|
|
|