Да, вы всегда можете попробовать сами и узнать:
file1.c
#include <stdio.h>
void call_hello(void (*fptr)(void));
static void hello(void) {
puts("hello");
}
int main(void)
{
void (*fptr)(void) = hello;
call_hello(fptr);
return 0;
}
file2.c
void call_hello(void (*fptr)(void))
{
fptr();
}
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 ...
использовать функцию токенизатора 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;
Что-то вроде этого, вероятно, может помочь:
<?php
$words = implode(' ', array_slice(split($input, ' ', 21), 0, 20));
Распространенная проблема при создании динамических веб-страницы (откуда берется контент из базы данных, управление контентом система или внешний источник, такой как RSS-канал) заключается в том, что вводимый текст может быть слишком длинным и вызвать макет страницы на "разрыв".
Одно из решений - обрезать текст так, чтобы он поместился на странице. это звучит просто, но часто результаты не так, как ожидалось из-за слов и предложения прерываются в несоответствующие точки.
Разделите строку (в массив) на <
пробел >
, а затем возьмите первые 20 элементов этого массива.
Попробуйте регулярное выражение.
Вам нужно что-то, что соответствовало бы 20 словам (или 20 границам слов).
Итак (мое регулярное выражение ужасно, поправьте меня, если оно неточно) :
/(\w+\b){20}/
используйте explode () .
Пример из документации.
// Example 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
обратите внимание, что explode имеет функцию ограничения. Так что вы можете сделать что-нибудь вроде
$message = implode(" ", explode(" ", $long_message, 20));
Измените число 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("")); # => ""