Подсчет символов параграфах - PHP

166
10 июня 2018, 13:50

Подскажите как подобное реализовать если в параграфе меньше 1000 символов добавить к нему еще несколько, но так чтобы они не объединялись, а шли также параграфом до 1000 символов в общем.

Код выглядит так

$str = '
<p>К автобусу бежала одевающаяся по поводу чего все вымерли. Пальмой, открыл пасть, засунул в ледяную. Потенцию и взвыл от него была гордая и стал грызть дерево блаженно. Был зажиточный: он сразу женился сзади у поросят находится.</p>
<p>Из-за тучи выглянул луч солнца и упал на двор.Бессмертный хранил свою смерть в горницу вошел. Певчей птицы, кроме вороны стихотворение написано в одном. Королеве подвески, она не пожалел.</p>
<p>К автобусу бежала одевающаяся по поводу чего все вымерли. Пальмой, открыл пасть, засунул в ледяную. Потенцию и взвыл от него была гордая и стал грызть дерево блаженно. Был зажиточный: он сразу женился сзади у поросят находится.</p>
<p>Из-за тучи выглянул луч солнца и упал на двор.Бессмертный хранил свою смерть в горницу вошел. Певчей птицы, кроме вороны стихотворение написано в одном. Королеве подвески, она не пожалел.</p>
<p>К автобусу бежала одевающаяся по поводу чего все вымерли. Пальмой, открыл пасть, засунул в ледяную. Потенцию и взвыл от него была гордая и стал грызть дерево блаженно. Был зажиточный: он сразу женился сзади у поросят находится.</p>
<p>Из-за тучи выглянул луч солнца и упал на двор.Бессмертный хранил свою смерть в горницу вошел. Певчей птицы, кроме вороны стихотворение написано в одном. Королеве подвески, она не пожалел.</p>
<p>К автобусу бежала одевающаяся по поводу чего все вымерли. Пальмой, открыл пасть, засунул в ледяную. Потенцию и взвыл от него была гордая и стал грызть дерево блаженно. Был зажиточный: он сразу женился сзади у поросят находится.</p>
<p>Из-за тучи выглянул луч солнца и упал на двор.Бессмертный хранил свою смерть в горницу вошел. Певчей птицы, кроме вороны стихотворение написано в одном. Королеве подвески, она не пожалел.</p>';

$caunt = mb_strlen($str,'UTF-8');
preg_match_all('~<p>.*?</p>~', $str, $arr);
$arr = empty($arr[0]) ? [] : $arr[0];

foreach ($arr as $k => $item) {
        echo $item;
}
Answer 1

Вариант (при условии, что все ваши регулярки работают):

<?php
header('Content-type: text/html; charset=utf-8');
mb_internal_encoding('utf-8');

$str = '
<p>К автобусу бежала одевающаяся по поводу чего все вымерли. Пальмой, открыл пасть, засунул в ледяную. Потенцию и взвыл от него была гордая и стал грызть дерево блаженно. Был зажиточный: он сразу женился сзади у поросят находится.</p>
<p>Из-за тучи выглянул луч солнца и упал на двор.Бессмертный хранил свою смерть в горницу вошел. Певчей птицы, кроме вороны стихотворение написано в одном. Королеве подвески, она не пожалел.</p>
<p>К автобусу бежала одевающаяся по поводу чего все вымерли. Пальмой, открыл пасть, засунул в ледяную. Потенцию и взвыл от него была гордая и стал грызть дерево блаженно. Был зажиточный: он сразу женился сзади у поросят находится.</p>
<p>Из-за тучи выглянул луч солнца и упал на двор.Бессмертный хранил свою смерть в горницу вошел. Певчей птицы, кроме вороны стихотворение написано в одном. Королеве подвески, она не пожалел.</p>
<p>К автобусу бежала одевающаяся по поводу чего все вымерли. Пальмой, открыл пасть, засунул в ледяную. Потенцию и взвыл от него была гордая и стал грызть дерево блаженно. Был зажиточный: он сразу женился сзади у поросят находится.</p>
<p>Из-за тучи выглянул луч солнца и упал на двор.Бессмертный хранил свою смерть в горницу вошел. Певчей птицы, кроме вороны стихотворение написано в одном. Королеве подвески, она не пожалел.</p>
<p>К автобусу бежала одевающаяся по поводу чего все вымерли. Пальмой, открыл пасть, засунул в ледяную. Потенцию и взвыл от него была гордая и стал грызть дерево блаженно. Был зажиточный: он сразу женился сзади у поросят находится.</p>
<p>Из-за тучи выглянул луч солнца и упал на двор. Бессмертный хранил свою смерть в горницу вошел. Певчей птицы, кроме вороны стихотворение написано в одном. Королеве подвески, она не пожалел.</p>';

$caunt = mb_strlen($str,'UTF-8');
preg_match_all('~<p>(.*?)</p>~', $str, $arr); 
// $arr[1] is the text without p tag
$arr = empty($arr[0]) ? [] : $arr[1];
foreach ($arr as $k => $item) {
    $tmp_count = mb_strlen($item);
    if($tmp_count >= 1000) // Checking number of characters 
        echo $item;
    else{ // Less than 1000 characters
        // Padding with space
        $new_str = str_pad($item, 1000);
        echo '<p>' . $new_str . '</p>';
    }
}

Подробнее о mb_strlen тут

Подробнее о str_pad тут

READ ALSO
Формат времени на PHP

Формат времени на PHP

Подскажите пожалуйста, есть код следующего вида:

188
Журнал учёта навыков на php

Журнал учёта навыков на php

Делаю журнал учёта собственных навыков программирования, на php

194
Извлечение значений из массива (js)

Извлечение значений из массива (js)

Я отправляю post-запрос на сервер, а php даёт в ответ массив, но значения из массива я извлечь не могу

176