>백엔드 개발 >PHP 튜토리얼 >백슬래시로 구분된 문자열을 연관 배열로 효율적으로 변환하는 방법은 무엇입니까?

백슬래시로 구분된 문자열을 연관 배열로 효율적으로 변환하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-01 08:34:10651검색

How to Efficiently Convert a Backslash-Delimited String into an Associative Array?

백슬래시로 구분된 문자열에서 연관 배열 생성

많은 시나리오에서는 백슬래시로 구분된 키-값 쌍이 포함된 문자열을 연관 배열로 변환해야 합니다. 이 변환을 사용하면 해당 키를 사용하여 개별 값에 쉽게 액세스할 수 있습니다.

사용자 정의 정규 표현식 사용

한 가지 효과적인 방법은 preg_match_all 및 array_combine과 함께 사용자 정의 정규 표현식을 사용하는 것입니다.

preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p);
$array = array_combine($p[1], $p[2]);

이 정규식은 문자열의 키-값 쌍을 일치시키고 이를 두 개의 배열($p[1] 및 $p[2])는 연관 배열 $array로 결합됩니다.

접근 방식 일반화

이 방법은 다양한 키-값 구분 기호 및 쌍 구분 기호를 처리하도록 조정할 수 있습니다.

# For key-value separation using ':' and pair separation using ','
preg_match_all("/([^:]+)\\([^\,]+)/", $string, $p);
$array = array_combine($p[1], $p[2]);

다양한 구분 기호

다양한 구분 기호를 수용하기 위해 정규식은 다음과 같습니다. 수정됨:

# Allow different delimiters for keys, values, and pairs
preg_match_all("/([^:=]+)[ :=]+([^,+&]+)/", $string, $p);

영숫자 키 제한

키가 영숫자 문자로만 구성되도록 하려면:

# Allow only alphanumeric keys
preg_match_all("/(\w+)[ :=]+([^,+&]+)/", $string, $p);

추가 고려 사항

  • 선행/후행 공백 제거: preg_match_all("/s*([^=] )s*=s*([^,] )s*/", $string, $p);
  • 선택적 따옴표 제거: preg_match_all("/s *([^=] )s*=s*'?([^,] )(?

대체 기술

정규식 접근 방식 외에도 다른 방법은 다음과 같습니다.

parse_str(): 필요 이미 구분된 키-값 쌍이 있는 전처리된 문자열 &.

explode() foreach: 분해된 키-값 쌍을 수동으로 반복하므로 추가 오버헤드가 발생할 수 있습니다.

사용자 정의 루프: 폭발() 접근 방식과 유사하지만 문자열을 문자별로 구문 분석하지만 속도가 느릴 수 있습니다.

접근 방식 선택 애플리케이션의 특정 요구 사항 및 성능 고려 사항에 따라 다릅니다.

위 내용은 백슬래시로 구분된 문자열을 연관 배열로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.