대문자 배열 키 및 소문자 배열 값 (parse_str에서 입력)

jwka

그 문제는 이미 해결 된 것 같지만 "좋은"해결책을 찾지 못했습니다. 시간이 중요한 앱이 있고 일반적인 문자열을 assoc 배열로 변환해야합니다.

"appliCAation=webCALL&Arg1=ABC&arG2=xyZ&someMore=Dec-1950"

나는 그것을 사용할 수 있다는 것을 알고 parse_str()있지만 모든 키가 항상 대문자이고 모든 값이 항상 소문자가되도록 사용자 입력을 "정규화"하고 싶습니다 (가능한 경우 매개 변수에 의해 수행되고 코드의 풋 프린트를 넓 히지 않음). .

array_change_key_case()는 재귀 적으로 작동하지 않기 때문에 몇 줄의 코드와 효율적인 성능으로 우아한 방법을 찾습니다.

현재 나는 parse_str( strtolower( $input ), $arr );키를 변경하기 위해 배열을 사용 하고 (재귀 적으로) 반복합니다. 불행히도 두 가지 방법과 "많은"코드 라인이 필요합니다.

더 빠르고 / 더 좋고 / 작은 솔루션이 있습니까?

AbraCadaver

논리를 뒤집고 모든 것을 대문자로 만든 다음 값을 재귀 적으로 소문자로 지정합니다.

parse_str(strtoupper($string), $array);    
array_walk_recursive($array, function(&$v, $k) { $v = strtolower($v); });

이는 다음과 같은 여러 차원에서 작동합니다.

$string = "appliCAation=webCALL&Arg1=ABC&arG2=xyZ&someMore=Dec-1950&a[yZ][zzz]=efG";

굽힐 수 있는:

Array
(
    [APPLICAATION] => webcall
    [ARG1] => abc
    [ARG2] => xyz
    [SOMEMORE] => dec-1950
    [A] => Array
        (
            [YZ] => Array
                (
                    [ZZZ] => efg
                )
        )
)

질문을 다시 읽은 후 키와 값이 대문자인지 소문자인지 변경하거나 제어 할 수 있기를 원합니다. use()함수 이름으로 사용할 매개 변수 배열을 사용할 수 있습니다 .

$params = ['key' => 'strtoupper', 'val' => 'strtolower'];
parse_str($params['key']($string), $array);    
array_walk_recursive($array, function(&$v, $k) use($params){ $v = $params['val']($v); });

키만 변경하려면 원래 문자열에 정규식을 사용합니다.

$keys = 'strtoupper';
$string = preg_replace_callback('/[^=&]*=/', function($m) use($keys) { return $keys($m[0]); }, $string);
parse_str($string, $array);

[^=&]*=문자 클래스 []문자가 일치 ^하지 =또는 &0 번 이상 *다음은 =.

마지막으로, 함수 이름을 제공하면 (알림 val이 비어 있음) 키와 값을 수행 할 수 있으며 그렇지 않으면 변환되지 않습니다.

$params = ['key' => 'strtoupper', 'val' => ''];
$string = preg_replace_callback('/([^=&]*)=([^=&]*)/',
                                function($m) use($params) {
                                    return (empty($params['key']) ? $m[1] : $params['key']($m[1]))
                                           .'='.
                                           (empty($params['val']) ? $m[2] : $params['val']($m[2]));
                                }, $string);
parse_str($string, $array);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

키와 해당 값이 배열 값인 객체에 매핑 된 문자열 배열을 입력하는 방법

분류에서Dev

Typescript : 객체 키 및 배열 문자열 값에서 유형 생성

분류에서Dev

값에 대한 배열 및 문자열 변수 연결

분류에서Dev

입력 배열 자바의 최소 및 최대 값?

분류에서Dev

int에 대한 배열 문자열 값

분류에서Dev

PHP : 입력 문자열과 일치하는 필드의 배열 키 값 조정

분류에서Dev

JSON에서 배열의 키 및 문자열 바꾸기

분류에서Dev

구조 배열 문제 및 사용자 정수 입력에서 배열 문자열 가져 오기

분류에서Dev

문자열 키를 사용하여 배열에서 값 반환

분류에서Dev

PHP-문자열에서 키 값 배열 만들기

분류에서Dev

문자열에서 요소 배열 가져 오기 및 값 조회

분류에서Dev

각 요소 문제의 배열 및 하위 문자열에 문자열 배치

분류에서Dev

입력 문자열에서 문자열 배열 만들기

분류에서Dev

입력 문자열에서 문자열 배열 만들기

분류에서Dev

다차원 배열 키에 값 입력

분류에서Dev

출력을 위해 문자 배열에서 동일한 문자 배열로 최소 최대 값을 설정하는 방법

분류에서Dev

Stata에서 문자열 변수 분할 및 순서대로 값 배치

분류에서Dev

문자열 대소 문자 구분 값을 배열과 일치

분류에서Dev

키 : 문자열 및 값이있는 NSMutableDictionary : <문자열, 문자열>

분류에서Dev

자바에서 배열의 최소 및 최대 값을 찾기

분류에서Dev

찾을 json 문자열 및 요소 (키 / 값) 구문 분석

분류에서Dev

문자열 값을 입력으로 분할 된 배열로

분류에서Dev

배열에 문자열 값 저장

분류에서Dev

PHP : 배열에 문자열 값 추가

분류에서Dev

Java에서 문자열 배열에 대한 사용자 입력 가져 오기

분류에서Dev

Java에서 문자열 배열에 대한 사용자 입력 가져 오기

분류에서Dev

키-값 파일에서 문자열 (string [strings])의 연관 배열을 만드는 방법은 무엇입니까?

분류에서Dev

자바에 배열 입력

분류에서Dev

배열에 숫자 입력

Related 관련 기사

  1. 1

    키와 해당 값이 배열 값인 객체에 매핑 된 문자열 배열을 입력하는 방법

  2. 2

    Typescript : 객체 키 및 배열 문자열 값에서 유형 생성

  3. 3

    값에 대한 배열 및 문자열 변수 연결

  4. 4

    입력 배열 자바의 최소 및 최대 값?

  5. 5

    int에 대한 배열 문자열 값

  6. 6

    PHP : 입력 문자열과 일치하는 필드의 배열 키 값 조정

  7. 7

    JSON에서 배열의 키 및 문자열 바꾸기

  8. 8

    구조 배열 문제 및 사용자 정수 입력에서 배열 문자열 가져 오기

  9. 9

    문자열 키를 사용하여 배열에서 값 반환

  10. 10

    PHP-문자열에서 키 값 배열 만들기

  11. 11

    문자열에서 요소 배열 가져 오기 및 값 조회

  12. 12

    각 요소 문제의 배열 및 하위 문자열에 문자열 배치

  13. 13

    입력 문자열에서 문자열 배열 만들기

  14. 14

    입력 문자열에서 문자열 배열 만들기

  15. 15

    다차원 배열 키에 값 입력

  16. 16

    출력을 위해 문자 배열에서 동일한 문자 배열로 최소 최대 값을 설정하는 방법

  17. 17

    Stata에서 문자열 변수 분할 및 순서대로 값 배치

  18. 18

    문자열 대소 문자 구분 값을 배열과 일치

  19. 19

    키 : 문자열 및 값이있는 NSMutableDictionary : <문자열, 문자열>

  20. 20

    자바에서 배열의 최소 및 최대 값을 찾기

  21. 21

    찾을 json 문자열 및 요소 (키 / 값) 구문 분석

  22. 22

    문자열 값을 입력으로 분할 된 배열로

  23. 23

    배열에 문자열 값 저장

  24. 24

    PHP : 배열에 문자열 값 추가

  25. 25

    Java에서 문자열 배열에 대한 사용자 입력 가져 오기

  26. 26

    Java에서 문자열 배열에 대한 사용자 입력 가져 오기

  27. 27

    키-값 파일에서 문자열 (string [strings])의 연관 배열을 만드는 방법은 무엇입니까?

  28. 28

    자바에 배열 입력

  29. 29

    배열에 숫자 입력

뜨겁다태그

보관