Решение 140 символов ограничения статуса Twitter с помощью регулярных выражений PHP

1

Итак, мой текст, который я хочу опубликовать в Твиттере, иногда имеет более 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

  • 1
    Приведите пример?
  • 0
    Добавлен пример @syck.
Показать ещё 3 комментария
Теги:
string
arrays
substring

3 ответа

1

Если вы можете быть уверены, что 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);
  • 0
    Это просто сокращает текст в 100 символов. Я знаю, что в ОП упоминалось 100 символов, но это все равно приведет к тому, что элементы будут превышать лимит твиттера, так как некоторые URL будут содержать более 40 символов? OP должен посчитать длину URL, вычесть это +1 из 140, а затем использовать это число вместо 100.
  • 0
    @MikelBitson Я добавил это всего минуту назад =)
0
$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"
0

Это может быть то, что вы хотите:

$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 символов для каждой строки

Ещё вопросы

Сообщество Overcoder
Наверх
Меню