У меня есть строка данных как таковая.
$str = "abc/text text def/long amount of text ghi/some text"
У меня есть массив моих разделителей
$arr = array('abc/', 'def/', 'ghi/', 'jkl/');
Что я могу сделать, чтобы получить этот результат?
Array ( [abc/] => text text [def/] => long amount of text [ghi/] => some text )
Также обратите внимание, что все значения в $ arr могут не всегда отображаться в $ str. Я просто заметил, что это проблема после использования кода из @rohitcopyright ниже.
Вместо этого вы можете использовать preg_split
$text = "abc/text text def/long amount of text ghi/some text"; $output = preg_split( "/(abc\/|def\/|ghi)/", $text); var_dump($output);
Вывод:
array(4) { [0]=> string(0) "" [1]=> string(10) "text text " [2]=> string(20) "long amount of text " [3]=> string(10) "/some text" }
Обновление: (удалите пустой элемент и переиндексируйте)
$output = array_values(array_filter(preg_split( "/(abc\/|def\/|ghi)/", $text))); var_dump($output);
вывод:
array(3) { [0]=> string(10) "text text " [1]=> string(20) "long amount of text " [2]=> string(10) "/some text" }
DEMO.
Обновление: (26-е место, 2013 год)
$str = "abc/text text def/long amount of text ghi/some text"; $array = preg_split( "/([az]{3}\/)/", $str, null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); $odd = $even = array(); foreach($array as $k => $v) { if ($k % 2 == 0) $odd[] = $v; else $even[] = $v; } $output = array_combine($odd, $even); print_r($output);
Вывод:
Array ( [abc/] => text text [def/] => long amount of text [ghi/] => some text )
DEMO.
Обновление: (26-е место, 2013 год)
Вы можете попробовать это также (только измените следующую строку, чтобы получить результат, о котором вы упоминали в комментарии)
$array = preg_split( "/([a-zA-Z]{1,4}\/)/", $str, null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
DEMO.
Try this you will get the exact output as you want. $con='abc/text text def/long amount of text ghi/some text'; $newCon = explode('/', $con); array_shift($newCon); $arr = array('abc/', 'def/', 'ghi/'); foreach($newCon as $key=>$val){ $newArrStr = str_replace("/", "", $arr[$key+1]); $newVal = str_replace($newArrStr, "", $newCon[$key]); $newArray[$arr[$key]] = $newVal; } print_r($newArray);