Итак, мой текст, который я хочу опубликовать в Твиттере, иногда имеет более 140 символов, поэтому мне нужно проверить длину, а затем перейти без изменений, если меньше 140, или нанести текст на две части (текст и ссылку) и захватить текстовую часть и сделать ее, например, 100 символов, - нарежьте остальную часть.
Затем возьмите часть длиной до 100 символов и поставьте ее с помощью url.
Как это сделать?
мой код:
if (strlen($status) < 140) {
// continue
} else {
// 1. slice the $status into $text and $url (every message has url so
// checking is not important right now
// 2. shorten the text to 100 char
// something like $text = substr($text, 0, 100); ?
// 3. put them back together
$status = $text . ' ' . $url;
}
Как мне изменить код? У меня большая проблема с первой частью при получении URL-адреса и текстовой части.
Btw. в каждом статусе $ есть только 1 URL-адрес, поэтому проверка для URL-адресов не требуется
Пример текста, который длиннее, чем он должен быть:
В настоящее время в Эквадоре обитают различные группы коренных народов, которые в течение пятнадцатого века постепенно были включены в Империю инков. Территория была колонизирована Испанией в шестнадцатом веке, достигнув независимости в 1820 году как часть Гран-Колумбии, из которой она появилась в качестве своего суверенного государства в 1830 году. Наследие обеих империй отражается в этнически разнообразном населении Эквадора, причем большая часть его 15,2 миллиона человек являются метисами, за которыми следуют крупные меньшинства европейского, америнского и африканского потомков. https://en.wikipedia.org/wiki/Ecuador
должно стать в конце концов:
В настоящее время в Эквадоре обитают различные группы коренных народов, которые постепенно включали int https://en.wikipedia.org/wiki/Ecuador
Если вы можете быть уверены, что URL-адрес не содержит пробелов (нет корректного URL-адреса) и что он всегда присутствует, попробуйте его следующим образом:
preg_match('/^(.*)(\\S+)$/', $status, $matches);
$text = $matches[1];
$url = $matches[2];
$text = substr($text, 0, 100);
Но, возможно, длина текста должна быть адаптирована к длине URL-адреса, поэтому вы будете использовать
$text = substr($text, 0, 140-strlen($url)-1);
$reg = '/\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i';
$string = "What is now Ecuador was home to a variety of indigenous groups that were gradually incorporated into the Inca Empire during the fifteenth century. The territory was colonized by Spain during the sixteenth century, achieving independence in 1820 as part of Gran Colombia, from which it emerged as its own sovereign state in 1830. The legacy of both empires is reflected in Ecuador ethnically diverse population, with most of its 15.2 million people being mestizos, followed by large minorities of European, Amerindian, and African descendant. https://en.wikipedia.org/wiki/Ecuador";
preg_match_all($reg, $string, $matches, PREG_PATTERN_ORDER);
$cut_string = substr($string, 0, (140-strlen($matches[0][0])-1));
$your_twitt = $cut_string . " " . $matches[0][0];
echo $your_twitt;
// ouputs : "What is now Ecuador was home to a variety of indigenous groups that were gradually incorporated into t https://en.wikipedia.org/wiki/Ecuador"
Это может быть то, что вы хотите:
$status = 'What is now Ecuador was home to a variety of indigenous groups that were gradually incorporated into the Inca Empire during the fifteenth century. The territory was colonized by Spain during the sixteenth century, achieving independence in 1820 as part of Gran Colombia, from which it emerged as its own sovereign state in 1830. The legacy of both empires is reflected in Ecuador\ ethnically diverse population, with most of its 15.2 million people being mestizos, followed by large minorities of European, Amerindian, and African descendant. https://en.wikipedia.org/wiki/Ecuador';
if (strlen($status) < 140) {
echo 'Lenght ok';
} else {
$totalPart = round(strlen($status)/100);
$fulltweet = array();
for ($i=0; $i < $totalPart; $i++) {
if($i==0)
{
$fulltweet[$i] = substr($status, 0,100);
}else{
$fulltweet[$i] = substr($status, $i * 100);
}
}
}
Если строка длиннее 140 символов, то она взорвется в массив из 100 символов для каждой строки