Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP上是否有用于单词的裁剪函数?_Php - Fatal编程技术网

PHP上是否有用于单词的裁剪函数?

PHP上是否有用于单词的裁剪函数?,php,Php,我有一个20字的短语 我想在10点把它剪下来 PHP上是否有一个现成的函数用于此功能?$spolded=explode(“,$string); $exploded = explode(" ", $string); for($i = 0; $i < 10;$i++){ echo $exploded[$i]." "; } 对于($i=0;$i

我有一个20字的短语

我想在10点把它剪下来

PHP上是否有一个现成的函数用于此功能?

$spolded=explode(“,$string);
$exploded = explode(" ", $string);
for($i = 0; $i < 10;$i++){
    echo $exploded[$i]." ";
}
对于($i=0;$i<10;$i++){ echo$爆炸[$i]。“”; }
您可以将短语拆分为一个数组,然后从数组中重新生成较短的短语

$words = explode(" ", $bigphrase);
$somewords = array_slice($words, 0, 10);
$smallphrase = implode(" ", $somewords);

您可以创建一个函数,将字符串拆分为数组,然后返回字符串。 像这样的东西应该可以

function crop($str, $length) {
  $str = explode(" ", $str);
  return implode(" " , array_slice($str, 0, $length));
}

不,我不这么认为,但你可以做这样的东西:

<?php
function strcrop($str, $words = 10)
{
    if(substr_count($str, ' ') > 10)
        return substr($str, 0, strpos($str, ' ', $words));
    return $str;
}

如果不使用数组,您可以这样做(这可能会更快,但尚未测试)


不,在PHP中,字符串中的单词没有裁剪函数。PHP甚至不知道单词是什么,您也没有指定

因此,我假设正则表达式中的单词或单词字符符合您的需要。如果是这种情况,您只需匹配字符串中的前10个单词,然后删除其余单词:

$string = preg_replace('~^\W*(\w+(?:\W+\w+){0,9}+).*$~', '$1', $string);

这同样适用于前面的非单词字符或单词之间的多个字符。

如果字符串少于10个单词,则会在末尾添加不必要的空格…如果字符串前面有空格(或中间有多个空格),它甚至不会返回前10个单词。如果字符串有连字符,这应该如何处理?例如,“用户定义”在您的上下文中是一个词还是两个词?我做了与其他解决方案相同的操作,但没有分解和内爆到原始字符串。不过我做了一个改进,因为如果没有更改的词少于10个,它就会断开。
$input='我的词间隔太大:),你能帮忙吗?还是根本不可能如果字符串开头有空格,单词之间有多个空格,该怎么办?或
,“
在单词之间?”。
<?php
function strcrop($str, $words = 10)
{
    if(substr_count($str, ' ') > 10)
        return substr($str, 0, strpos($str, ' ', $words));
    return $str;
}
<?php
    $myText = "Lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor incididunt ut labore et dolore magna aliqua";

    $result = cropWords($myText, 10);
    if($result !== false) {
        echo $result;
    }

    function cropWords($text, $cropPosition) {
        $counter = 0;
        $position = 0;
        while($counter++ < $cropPosition) {
            $position += strpos(substr($text, $position), " ");
            if($position === false) {
                return false;
            } else {
                $position++;
            }
        }
        return trim(substr($text, 0, $position));
    }
?>
$string = preg_replace('~^\W*(\w+(?:\W+\w+){0,9}+).*$~', '$1', $string);