2013-09-26 3 views
2
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";' 

어떻게 배열로 변환 할 수 있습니까?PHP는 문자열 배열 목록을 배열로 변환합니다.

+7

첫 번째 질문은 어떻게 그런 문자열을 얻었습니까? –

+4

[XY 문제] (http://meta.stackexchange.com/a/66378)처럼 보입니다. 이 문자열은 어디서 구할 수 있습니까? – Reeno

+0

배열로 변환하는 것은 쉽지 않습니다 ...이 유형의 문자열을 어떻게 분할 할 수 있습니까? ?? 이 값을 단지 값으로 전달하려고 시도하십시오 .. –

답변

1
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'; 

preg_match_all('/"(.*)";/U', $str, $matches); 
$arr = $matches[1]; 

var_dump($arr); 
+0

위의 전나무 샘플을 작동하지만 다른 문자열 리터럴 (또는 HEREDOCS e.t.c 일 수 있음)이있는 경우 실패합니다 –

+0

OP에 다른 변형이 있는지 여부에 따라 다름 –

+0

예, 그렇게 생각합니다. –

0

이와 비슷한?

<?php 
$str = '$answers[0] = "Love it"; $answers[1] = "Hate it."; $answers[2] = "Doesnt care"; $answers[3] = "Like it";'; 
eval($str); 
print_r($answers); 

?> 
+2

할 필요가 없다면'eval()'을 사용하지 말라. 그리고 당신이 원하는 것을 성취 할 수있는 또 다른 방법이 있습니다. 또한 OP 예제 문자열에는 '$'기호가 없으므로 답변이 아닙니다. –

+1

eval()은 좋은 연습이 아닙니다. 서버에서 입력 코드를 실행할 수있는 권한을 허용합니다. 서버에 해를 끼칠 수 있으므로 ..... 다른 방법을 시도하십시오 .... –

1
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'; 
$chunks = explode(';', $str); 

for ($aa=0;$aa<count($chunks);$aa++) 
{ 
    $chunks1 = explode('=', $chunks[$aa]); 
    $myArray[]=$chunks1[1]; 
} 
+0

$ myArray에 오류가 있습니다. [] = $ chunks1 [1]; –

+0

무엇이 오류입니까? – sskoko

0
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'; 

preg_match_all('/"(.*?)"/', $str, $answers); 

$answer = $answers[0]; 
print_r($answer); 
+0

멋진 작품, 고마워요 –

1

당신은 세미콜론 (;) 이후에 새로운 라인을 추가 할 경우, parse_ini_string() 기능을 살펴.

$str = str_replace(';', "\n", $str); // <- add them in the source if you can 
$array = parse_ini_string($str); 
+0

예, 다른 해결책이 있습니다. 고마워! –

관련 문제