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

C++ JAVA
Post Reply
User avatar
RiddleR
Потребител
Потребител
Posts: 1276
Joined: Mon Oct 27, 2008 8:26 pm
Answers: 52
Contact:

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

Post by RiddleR » Sat Apr 26, 2014 8:55 am

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

Code: Select all

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

Code: Select all

и тук си продължава хасдсдафас дфасд фасд фасдф асд фасдф асдфасдфасдф

joTunkiq
Потребител
Потребител
Posts: 826
Joined: Tue Dec 25, 2012 10:03 am
Answers: 142
Contact:

Post by joTunkiq » Sat Apr 26, 2014 9:28 am

[php]$chast1 = subsrt($text,0, 100);
$chast2 = substr($text,100, strlen($text));

echo $chast1;
// banner ?
escho $chast2;[/php] :idea: :idea: :?:

User avatar
RiddleR
Потребител
Потребител
Posts: 1276
Joined: Mon Oct 27, 2008 8:26 pm
Answers: 52
Contact:

Post by RiddleR » Sat Apr 26, 2014 9:39 am

нещо не става, нищо не изкарва.

fbian
Турист
Турист
Posts: 204
Joined: Sat May 26, 2012 3:55 pm
Answers: 18

Post by fbian » Sat Apr 26, 2014 9:55 am

RiddleR wrote:нещо не става, нищо не изкарва.
Текста ти трябва да е над 100 символа,за да видиш резултата(става въпрос за този код,който са ти дали).

User avatar
RiddleR
Потребител
Потребител
Posts: 1276
Joined: Mon Oct 27, 2008 8:26 pm
Answers: 52
Contact:

Post by RiddleR » Sat Apr 26, 2014 10:07 am

текста е над 1000 символа, но не ми изкарва нищо.

joTunkiq
Потребител
Потребител
Posts: 826
Joined: Tue Dec 25, 2012 10:03 am
Answers: 142
Contact:

Post by joTunkiq » Sat Apr 26, 2014 10:28 am

еми замести ли променливата $text с променливата на твоя текст ? Добави ли код за изкарване на банера ти, там каде добавих коментара ? :!: :shock:

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1573
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 163
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Sat Apr 26, 2014 3:38 pm

Това не е много добра идея, защото ако текстът е примерно 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);[/php]
Единственото, което трябва да промениш, е променливата $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>";
}
}[/php]
Проверката я слагам, за да няма банер след последния елемент.

ДЕМО: http://sandbox.onlinephpfunctions.com/c ... 35ed08b010

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 865
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Post by Revelation » Sun Apr 27, 2014 8:13 am

Поиграй си с wordwrap(). Може и str_split() като за втори параметър можеш да ползваш str_word_count($text) / 2.

User avatar
RiddleR
Потребител
Потребител
Posts: 1276
Joined: Mon Oct 27, 2008 8:26 pm
Answers: 52
Contact:

Post by RiddleR » Mon Apr 28, 2014 9:25 am

anonimen wrote:Това не е много добра идея, защото ако текстът е примерно 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);[/php]
Единственото, което трябва да промениш, е променливата $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>";
}
}[/php]
Проверката я слагам, за да няма банер след последния елемент.

ДЕМО: http://sandbox.onlinephpfunctions.com/c ... 35ed08b010
нещо или аз не мога да направя или ми рижи тикста много гадно с някви ероглифил Има ли друг начин?

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1573
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 163
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Mon Apr 28, 2014 11:19 am

Тогава замести този ред:

Code: Select all

do $parts&#91;$i&#93; = substr&#40;$text, $i*$n, $n&#41;;
с този:

Code: Select all

do $parts&#91;$i&#93; = mb_substr&#40;$text, $i*$n, $n, "utf-8"&#41;;
Също и този:

Code: Select all

$length = strlen&#40;$text&#41;;
с този:

Code: Select all

$length = mb_strlen&#40;$text, "utf-8"&#41;;

Post Reply