HTTP2 на Ubuntu 17.04, не работающей

Я установил Ubuntu 17.04 на своем ПК, Apache установки с PHP 7 для работы над некоторыми разработками, но когда я пытался установить HTTP2 на своем Apache, это не будет работать, потому что это не установка для Apache рабочее mpm-предварительное-ветвление, и я не могу отключить mpm-предварительное-ветвление, потому что это используется PHP 7, какие-либо идеи, как я могу получить эту работу?

Спасибо.

0
задан 15 October 2017 в 16:10

26 ответов

function limit_text($text, $limit) {
      if (str_word_count($text, 0) > $limit) {
          $words = str_word_count($text, 2);
          $pos = array_keys($words);
          $text = substr($text, 0, $pos[$limit]) . '...';
      }
      return $text;
    }

echo limit_text('Hello here is a long sentence blah blah blah blah blah hahahaha haha haaaaaa', 5);

Выводы:

Hello here is a long ...
126
ответ дан 1 November 2019 в 03:02

на основе е‹ • йќњиѓЅй ‡ ответ Џ:

function truncate_words($string,$words=20) {
 return preg_replace('/((\w+\W*){'.($words-1).'}(\w+))(.*)/', '${1}', $string);
}

или

function truncate_words_with_ellipsis($string,$words=20,$ellipsis=' ...') {
 $new = preg_replace('/((\w+\W*){'.($words-1).'}(\w+))(.*)/', '${1}', $string);
 if($new != $string){
  return $new.$ellipsis;
 }else{
  return $string;
 }

}
2
ответ дан 1 November 2019 в 03:02

Попробуйте ниже кода,

 $text  = implode(' ', array_slice(explode(' ', $text), 0, 32))
 echo $text;
2
ответ дан 1 November 2019 в 03:02

Вот то, что я реализовал.

function summaryMode($text, $limit, $link) {
    if (str_word_count($text, 0) > $limit) {
        $numwords = str_word_count($text, 2);
        $pos = array_keys($numwords);
        $text = substr($text, 0, $pos[$limit]).'... <a href="'.$link.'">Read More</a>';
    }
    return $text;
}

, Как Вы видите, это базируется от ответа karim79, весь, чем необходимое изменение состояло в том, что, если оператор также должен был проверить по словам не символы.

я также добавил ссылку к основной функции для удобства. До сих пор это hsa работало безупречно. Благодаря исходному поставщику решений.

1
ответ дан 1 November 2019 в 03:02

Вот тот, который я использую:

    $truncate = function( $str, $length ) {
        if( strlen( $str ) > $length && false !== strpos( $str, ' ' ) ) {
            $str = preg_split( '/ [^ ]*$/', substr( $str, 0, $length ));
            return htmlspecialchars($str[0]) . '&hellip;';
        } else {
            return htmlspecialchars($str);
        }
    };
    return $truncate( $myStr, 50 );
1
ответ дан 1 November 2019 в 03:02

Другое решение :)

$aContent = explode(' ', $cContent);
$cContent = '';
$nCount = count($aContent);
for($nI = 0; ($nI < 20 && $nI < $nCount); $nI++) {
   $cContent .= $aContent[$nI] . ' ';
}
trim($cContent, ' ');
echo '<p>' . $cContent . '</p>';
1
ответ дан 1 November 2019 в 03:02

Это работало меня на UNICODE (UTF8) предложения также:

function myUTF8truncate($string, $width){
    if (mb_str_word_count($string) > $width) {
        $string= preg_replace('/((\w+\W*|| [\p{L}]+\W*){'.($width-1).'}(\w+))(.*)/', '${1}', $string);
    }
    return $string;
}
1
ответ дан 1 November 2019 в 03:02

Для ограничения слов, использую следующий небольшой код:

    $string = "hello world ! I love chocolate.";
    $explode = array_slice(explode(' ', $string), 0, 4);
    $implode = implode(" ",$explode);   
    echo $implode;

$implot даст: привет мир! Я

1
ответ дан 1 November 2019 в 03:02
function getShortString($string,$wordCount,$etc = true) 
{
     $expString = explode(' ',$string);
     $wordsInString = count($expString);
     if($wordsInString >= $wordCount )
     {
         $shortText = '';
         for($i=0; $i < $wordCount-1; $i++)
         {
             $shortText .= $expString[$i].' ';
         }
         return  $etc ? $shortText.='...' : $shortText; 
     }
     else return $string;
} 
1
ответ дан 1 November 2019 в 03:02

Я сделал свою функцию:

function summery($text, $limit) {
    $words=preg_split('/\s+/', $text);
     $count=count(preg_split('/\s+/', $text));
      if ($count > $limit) {
          $text=NULL;
          for($i=0;$i<$limit;$i++)
              $text.=$words[$i].' ';
          $text.='...';
      }
      return $text;
    }
0
ответ дан 1 November 2019 в 03:02

Позволяет предполагают, что у нас есть строковые переменные $string , $start , и $limit , мы можем одолжить 3 или 4 функции у PHP для достижения этого. Они:

  • script_tags () PHP функционируют для удаления ненужного HTML и тегов PHP (если существует кто-либо). Эта привычка быть необходимым, при отсутствии HTML-тэгов или тегов PHP.
  • взрываются () для разделения $string в массив
  • array_splice () для определения количества слов и где это начнет с. Этим будут управлять значения, присвоенные нашему $start и $limit переменные.
  • и наконец, интегрируются () для присоединения к элементам массива в усеченную строку..

    function truncateString($string, $start, $limit){
        $stripped_string =strip_tags($string); // if there are HTML or PHP tags
        $string_array =explode(' ',$stripped_string);
        $truncated_array = array_splice($string_array,$start,$limit);
        $truncated_string=implode(' ',$truncated_array);
    
        return $truncated_string;
    }
    

Это настолько просто..

я надеюсь, что это было полезно.

0
ответ дан 1 November 2019 в 03:02
function limitText($string,$limit){
        if(strlen($string) > $limit){
                $string = substr($string, 0,$limit) . "...";
        }
        return $string;
}

это возвратит 20 слов. Я надеюсь, что это поможет

0
ответ дан 1 November 2019 в 03:02
$text='some text';
$len=strlen($text);
    $limit=500;
// char
    if($len>$limit){
        $text=substr($text,0,$limit);
        $words=explode(" ", $text);
        $wcount=count($words);
        $ll=strlen($words[$wcount]);
        $text=substr($text,0,($limit-$ll+1)).'...';
    }
0
ответ дан 1 November 2019 в 03:02

Если Вы кодируете на Laravel всего use Illuminate\Support\Str

, вот пример

Str::words($category->publication->title, env('WORDS_COUNT_HOME'), '...')

Hope, это было полезно.

4
ответ дан 1 November 2019 в 03:02

С тройными точками:

function limitWords($text, $limit) {
    $word_arr = explode(" ", $text);

    if (count($word_arr) > $limit) {
        $words = implode(" ", array_slice($word_arr , 0, $limit) ) . ' ...';
        return $words;
    }

    return $text;
}
4
ответ дан 1 November 2019 в 03:02

Не мое собственное создание, это - модификация предыдущих сообщений. кредиты переходят к karim79.

function limit_text($text, $limit) {
    $strings = $text;
      if (strlen($text) > $limit) {
          $words = str_word_count($text, 2);
          $pos = array_keys($words);
          if(sizeof($pos) >$limit)
          {
            $text = substr($text, 0, $pos[$limit]) . '...';
          }
          return $text;
      }
      return $text;
    }
5
ответ дан 1 November 2019 в 03:02

Простой и полностью оборудованный усеченный () метод:

function truncate($string, $width, $etc = ' ..')
{
    $wrapped = explode('$trun, wordwrap($string, $width, '$trun, false), 2);
    return $wrapped[0] . (isset($wrapped[1]) ? $etc : '');
}
7
ответ дан 1 November 2019 в 03:02
    function limit_word($start,$limit,$text){
            $limit=$limit-1;
            $stripped_string =strip_tags($text);
            $string_array =explode(' ',$stripped_string);
            if(count($string_array)>$limit){
            $truncated_array = array_splice($string_array,$start,$limit);
            $text=implode(' ',$truncated_array).'...';
            return($text);
            }
            else{return($text);}
    }
-2
ответ дан 1 November 2019 в 03:02

К Ближайшему Пространству

Усекает к ближайшему предыдущему пространству целевого символа. Демонстрация

  • $str строка, чтобы быть усеченный
  • $chars количество символов, которые будут разделены, может быть переопределен $to_space
  • $to_space boolean для того, усечь ли от пространства около $chars предел

Функция

function truncateString($str, $chars, $to_space, $replacement="...") {
   if($chars > strlen($str)) return $str;

   $str = substr($str, 0, $chars);
   $space_pos = strrpos($str, " ");
   if($to_space && $space_pos >= 0) 
       $str = substr($str, 0, strrpos($str, " "));

   return($str . $replacement);
}

Образец

<?php

$str = "this is a string that is just some text for you to test with";

print(truncateString($str, 20, false) . "\n");
print(truncateString($str, 22, false) . "\n");
print(truncateString($str, 24, true) . "\n");
print(truncateString($str, 26, true, " :)") . "\n");
print(truncateString($str, 28, true, "--") . "\n");

?>

Вывод

this is a string tha...
this is a string that ...
this is a string that...
this is a string that is :)
this is a string that is--
13
ответ дан 1 November 2019 в 03:02

что относительно

chunk_split($str,20);

Запись в руководстве PHP

-1
ответ дан 1 November 2019 в 03:02

используйте функцию токенизатора PHP strtok () в цикле.

$token = strtok($string, " "); // we assume that words are separated by sapce or tab
$i = 0;
$first20Words = '';
while ($token !== false && $i < 20) {
    $first20Words .= $token;
    $token = strtok(" ");
    $i++;
}
echo $first20Words;
2
ответ дан 1 November 2019 в 03:02

Что-то вроде этого могло, вероятно, добиться цели:

<?php 
$words = implode(' ', array_slice(split($input, ' ', 21), 0, 20));
2
ответ дан 1 November 2019 в 03:02

Разделите строку (на массив) <пространство>, и затем возьмите первые 20 элементов того массива.

4
ответ дан 1 November 2019 в 03:02

Попробуйте regex.

Вам нужно что-то, что распознало бы 20 слов (или 20 границ слова).

Таким образом (мой regex ужасен так, исправляют меня, если это не точно):

/(\w+\b){20}/

И вот некоторые примеры regex в php.

7
ответ дан 1 November 2019 в 03:02

Измените число 3 к числу 20 ниже, чтобы получить первые 20 слов или передать его как параметр. Следующее демонстрирует, как получить первые 3 слова: (так изменитесь 3 кому: 20 изменить значение по умолчанию):

function first3words($s, $limit=3) {
    return preg_replace('/((\w+\W*){'.($limit-1).'}(\w+))(.*)/', '${1}', $s);   
}

var_dump(first3words("hello yes, world wah ha ha"));  # => "hello yes, world"
var_dump(first3words("hello yes,world wah ha ha"));   # => "hello yes,world"
var_dump(first3words("hello yes world wah ha ha"));   # => "hello yes world"
var_dump(first3words("hello yes world"));  # => "hello yes world"
var_dump(first3words("hello yes world.")); # => "hello yes world"
var_dump(first3words("hello yes"));  # => "hello yes"
var_dump(first3words("hello"));  # => "hello"
var_dump(first3words("a")); # => "a"
var_dump(first3words(""));  # => ""
29
ответ дан 1 November 2019 в 03:02

Модель перед ветвлением вводит довольно много ограничений для HTTP даже без HTTP/2, но с HTTP/2, это предотвращает много функций используемого HTTP/2. Так как каждый запрос происходит в отдельном процессе и нет никакой многопоточности, Apache не может мультиплексировать их (служите нескольким запросам на том же соединении TCP), если это не изменило способ, которым предварительное ветвление работает вполне существенно, к которому это выбрало не. Таким образом, поддержка HTTP/2 ограничена единственным запросом, за один раз для каждого подключения при использовании предварительного ветвления.

( Это документируется здесь )

А хороший современный способ интегрировать PHP с веб-сервером состоит в том, чтобы использовать PHP-FPM (встроенный диспетчер процессов FastCGI PHP) и наличие реле веб-сервера запросы PHP прочь к этому и получить их ответы. Затем можно использовать многопоточный веб-сервер как Apache с рабочим MPM, или основанный на событии веб-сервер как Apache с событием MPM или nginx (который особенно хорош в HTTP/2, из-за его способности содержать открытые тысячи соединений с очень небольшой памятью). На самом деле это - вероятно, наиболее распространенный способ использования PHP с nginx, и я также видел, что это использовало на Apache2 прежде из соображений безопасности (например, наличие различных приложений PHP, работающих как отдельные пользователи). Поддержка HTTP/2 походит на достойную причину также.

существуют многие руководства по установке веб-серверов и PHP для использования PHP-FPM.

2
ответ дан 2 November 2019 в 02:59

Другие вопросы по тегам:

Похожие вопросы: