powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / пасринг строки
9 сообщений из 9, страница 1 из 1
пасринг строки
    #37957826
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Я в php новичок – не могли бы подсказать правильно ли я реализую пасринг строки типа:
"NAME1=VALUE1; NAME2=VALUE2"

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    $array = explode(";", $data);
    $key = array_search(' NAME1', $array);
    $NAME1 = '';
    if (!($key===false))	{
 		$NAME1 = explode("=", $array[$key], 2)[1]
    }
    $key = array_search(' NAME2', $array);
    $NAME2 = '';
    if (!($key===false))	{
		$NAME2 = explode("=", $array[$key], 2)[1]
    }



(Нужно получить значение VALUE1 и VALUE2 в переменные $NAME1 и $NAME2
...
Рейтинг: 0 / 0
пасринг строки
    #37957856
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisichkinНужно получить значение VALUE1 и VALUE2 в переменные $NAME1 и $NAME2
Не совсем красиво плодить кучу переменных. Лучше и безопаснее держать в массиве ($params['NAME1'] и т.д.). Особенно, если вы САМИ это все разбираете. Хотя в вашем коде бояться нечего - вы разбираете только то, что нужно вам. Это безопасно. Но если завтра вам надоест 10-20 одинаковых блоков кода и вы решите заменить на универсальный разбор, то можете внести в код каку-нибудь уязвимость.

Тем не менее, открываем мануал и просматриваем доступный функционал:
http://php.net/manual/ru/ref.strings.php

К примеру, если бы вы разделяли параметры не точкой с запятой, а амперсандом как в url-ах, то достаточно было бы воспользоваться уже готовой функцией, которая так и называется "спарсить строку" (parse_str).
...
Рейтинг: 0 / 0
пасринг строки
    #37957869
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
Мне просто нужно модифицировать код для боевого сервера...
а параметры я точно знаю - их нужно использовать в дальнейшем sql запросе.
...
Рейтинг: 0 / 0
пасринг строки
    #37958412
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lisichkin,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
$str = "NAME1=VALUE1; NAME2=VALUE2";
$results = array();
foreach (array_map('trim', explode(';', $str)) as $item) {
$item = explode('=',$item,2);
if(iszeof($item)==2) {
$result[$item[0]] = $item[1];
}
}
var_dump($result);
...
Рейтинг: 0 / 0
пасринг строки
    #37958447
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lisichkin,

Код: php
1.
2.
3.
$str = "NAME1=VALUE1; NAME2=VALUE2";
parse_str(str_replace(';', '&', $str), $out);
print_r($out);
...
Рейтинг: 0 / 0
пасринг строки
    #37958674
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lisichkin,

Код: php
1.
2.
3.
4.
5.
$str = "NAME1=VALUE1; NAME2=VALUE2";
preg_match_all('/(\w+)\=(\w+)/', $str, $out);
$out = array_combine($out[1], $out[2]);

print_r($out);
...
Рейтинг: 0 / 0
пасринг строки
    #37958677
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sscanf , да?
...
Рейтинг: 0 / 0
пасринг строки
    #37958679
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowsscanf , да? Можно. Но как правильно задать строку формата без лишних распиливаний?
...
Рейтинг: 0 / 0
пасринг строки
    #37958680
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow,

Можно к примеру так:
Код: php
1.
2.
3.
4.
5.
6.
$str = "NAME1=VALUE1; NAME2=VALUE2  ";

foreach (str_getcsv($str, $delimiter = ';') as $pair) {
	list($key, $value) = sscanf($pair, "%[^=]=%[^;];"); // работает
	echo $key . " " . $value . PHP_EOL;
}
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / пасринг строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]