Как я могу использовать куски массива разного размера? - PullRequest
0 голосов
/ 08 мая 2020

Я создаю код для разбивки на страницы с помощью explode и array_chunks, но мне нужно, чтобы в каждом массиве были разные размеры (я вставляю абзацы html, и каждый из них имеет разный размер), как я могу сделать Это? Спасибо и извините мой Engli sh.

<?php
$libro = file_get_contents("libro.html");
$parrafosPagina = 3;
if(empty($_GET['p'])){ $pag=1; } else { $pag=$_GET['p']; }
$parrafos = explode('</p>', $libro);
$paginas = array_chunk($parrafos, $parrafosPagina);
?>

1 Ответ

0 голосов
/ 08 мая 2020

Итак, у вас есть файл HTML, который вы хотите разделить на </p>, и вы хотите получить элементы, которые будут на $_GET['p'] -ой странице?

Если это то, что вы хотите, это сработает для вас:

$parrafos = explode('</p>', $libro);

// Page N starts at index (N-1)*(Page Size), assuming N is 1-indexed.
$startIndex = ($pag - 1) * $parrafosPagina;

// This will return an empty array if $startIndex is out of bounds.
return array_slice($parrafos, $startIndex, $paraffosPagina);

В противном случае, если вы хотите, что делает array_chunk(), я не уверен, какова цель $_GET['p']. Тот факт, что разные абзацы имеют разную длину символа, не повлияет ни на что для этой цели.

Хотя, если вы пытаетесь получить ТОЛЬКО блоки <p></p> и ничего больше из HTML, вместо используя explode(), я бы использовал DOMDocument. Ссылка { ссылка }

Это связано с тем, что разнесение по тегу закрытия абзаца вернет гораздо больше, чем просто содержимое тегов абзаца.

Приносим извинения за неуверенность то, о чем вы просите, но ваш вопрос какое-то время не использовался, поэтому я подумал, что дам ему go!

...