Разделяне на текст в 2 части.

RiddleR

Registered
Здравейте, имаме $tekst, който е доста дълъг. Как може примерно да го разделя на 2 части, тоест :

Код:
садасдасд асд асд асдасдадасдасдасдасдасдадасдасдасдасдасдад

разделяме го тук, можем да сложим нещо, като снимка банер и т.н.

Код:
и тук си продължава хасдсдафас дфасд фасд фасдф асд фасдф асдфасдфасдф
 
PHP:
$chast1 = subsrt($text,0, 100);
$chast2 = substr($text,100, strlen($text));

echo $chast1;
 // banner ?
escho $chast2;
:idea: :idea: :?:
 
RiddleR каза:
нещо не става, нищо не изкарва.
Текста ти трябва да е над 100 символа,за да видиш резултата(става въпрос за този код,който са ти дали).
 
еми замести ли променливата $text с променливата на твоя текст ? Добави ли код за изкарване на банера ти, там каде добавих коментара ? :!: :shock:
 
Това не е много добра идея, защото ако текстът е примерно 3 пъти по-дълъг, тогава банер ще има само веднъж в началото.
По-добре ще е ако банер се слага на всеки сто символа, а не само след първите 100 :)

Ето как ще изглежда кода:
PHP:
$text = <<<text
roejsdkngliesruhgfn3wuilerh uilreh qwertyuiopasdfghjklzxcvbnm,qwertyuiowasdfgyuiolzxcvbnm,qwertyuioasdfghjkzxcvbnmqwertyuioASDFGHJKL;ZXCVBNMqwertyuiosdfghjklxcvbnmasdfghwertyui
text;
$n = 50; //това означава да раздели текста на всеки 50 символа

$i = 0;
$length = strlen($text);
$parts = array();
do $parts[$i] = substr($text, $i*$n, $n);
while($length > ++$i*$n);

var_dump($parts);
Единственото, което трябва да промениш, е променливата $text и $n. Останалото не го пипай :)
Накрая $parts ще съдържа масив с частите на $text.
Ето как можеш да го обработиш:
PHP:
for($i = 0; isset($parts[$i]); $i++) {
  echo $parts[$i];
  if(isset($parts[$i+1])) { //тук слагаш банера
    echo "<br><h1>baner!</h1><br>";
  }
}
Проверката я слагам, за да няма банер след последния елемент.

ДЕМО: http://sandbox.onlinephpfunctions.com/code/ff050a8ccf1745af36f19a112e558f35ed08b010
 
Поиграй си с wordwrap(). Може и str_split() като за втори параметър можеш да ползваш str_word_count($text) / 2.
 
anonimen каза:
Това не е много добра идея, защото ако текстът е примерно 3 пъти по-дълъг, тогава банер ще има само веднъж в началото.
По-добре ще е ако банер се слага на всеки сто символа, а не само след първите 100 :)

Ето как ще изглежда кода:
PHP:
$text = <<<text
roejsdkngliesruhgfn3wuilerh uilreh qwertyuiopasdfghjklzxcvbnm,qwertyuiowasdfgyuiolzxcvbnm,qwertyuioasdfghjkzxcvbnmqwertyuioASDFGHJKL;ZXCVBNMqwertyuiosdfghjklxcvbnmasdfghwertyui
text;
$n = 50; //това означава да раздели текста на всеки 50 символа

$i = 0;
$length = strlen($text);
$parts = array();
do $parts[$i] = substr($text, $i*$n, $n);
while($length > ++$i*$n);

var_dump($parts);
Единственото, което трябва да промениш, е променливата $text и $n. Останалото не го пипай :)
Накрая $parts ще съдържа масив с частите на $text.
Ето как можеш да го обработиш:
PHP:
for($i = 0; isset($parts[$i]); $i++) {
  echo $parts[$i];
  if(isset($parts[$i+1])) { //тук слагаш банера
    echo "<br><h1>baner!</h1><br>";
  }
}
Проверката я слагам, за да няма банер след последния елемент.

ДЕМО: http://sandbox.onlinephpfunctions.com/code/ff050a8ccf1745af36f19a112e558f35ed08b010
нещо или аз не мога да направя или ми рижи тикста много гадно с някви ероглифил Има ли друг начин?
 
Тогава замести този ред:
Код:
do $parts[$i] = substr($text, $i*$n, $n);
с този:
Код:
do $parts[$i] = mb_substr($text, $i*$n, $n, "utf-8");

Също и този:
Код:
$length = strlen($text);
с този:
Код:
$length = mb_strlen($text, "utf-8");
 

Горе