@WQP

Как правильно разбить текст?

Здравствуйте, имеется текст:
img32.jpg | img75.jpg
img72.jpg | img01.jpg
...
img77.jpg | img80.jpg

Как разбить его так, чтобы получился массив вида:
array(
    '0' => array(
        '1'   => 'img32.jpg', 
        '2'    => 'img75.jpg',
                     ),
   '1' => array(
        '1'   => 'img72.jpg', 
        '2'    => 'img01.jpg',
                     ),
...
   'N' => array(
        '1'   => 'img77.jpg', 
        '2'    => 'img80.jpg',
                     ),
    )
  • Вопрос задан
  • 2341 просмотр
Решения вопроса 3
@VoRez
Backend web developer.
$result = array();
$lines = explode("\n", $text);
foreach($lines as $line){
 $elems = explode(" | ", $line);
 array_push($result, array($elems[0], $elems[1])); 
}
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
$sInput = <<<H
img32.jpg | img75.jpg
img72.jpg | img01.jpg
img77.jpg | img80.jpg
H;

var_dump(array_map(function ($el) {
	return array_map('trim', explode('|', $el));
	}, explode(PHP_EOL, $sInput)));
Ответ написан
Комментировать
vserykh
@vserykh
Разработка сайтов, лендингов «под ключ»
Если вам не принципиально, чтобы во вложенных массивах индексы были «1» и «2», то так:
<?php

$text = "img32.jpg | img75.jpg\nimg72.jpg | img01.jpg";

$array = explode("\n", $text);

$result = array();
foreach ($array as $str)
{
    $result[] = explode(' | ', $str);
}

echo '<pre>';
var_dump($result);
echo '</pre>';

Результатом будет:
array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(9) "img32.jpg"
    [1]=>
    string(9) "img75.jpg"
  }
  [1]=>
  array(2) {
    [0]=>
    string(9) "img72.jpg"
    [1]=>
    string(9) "img01.jpg"
  }
}

Функция explode разбивает строку на массив элементов, используя разделитель.

В вашем случае разбивать приходится дважды:
— по символу конца строки "\n" (обязательно в двойных кавычках),
— и по ' | ' (вертикальная черта, отбитая с обеих сторон пробелами).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Все-таки, тостер-драйвен девелопмент непобедим.
В его основе - отчаянное желание говнокодеров самоутвердиться, доказав окружающим, что они тоже могут писать говнокод! Именно за это нежное место и берут их ленивые попрошайки.

При этом регулярку не осилил никто :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы