PHP 根据字符限制剪切字符串
PHP Cut String On Character Limit
我正在创建一个 博客,它使用 Faker 工厂生成 演示数据 .我有一个生成的 Post 模型 ,它有一个正文字段,其中包含随机生成的 HTML 以及文本字段,它是通过剥离正文中的标签和限制接收到的数据512 个字符。 str_limit 工作正常,只是我需要将 text 剪掉,同时将其保留在 512 [=18] =]极限.
这是我的工厂:
<?php
use Faker\Generator as Faker;
$factory->define(Provar\Forum\Post::class, function (Faker $faker) {
$randomHTML = Purifier::clean($faker->randomHtml(2,3));
$trimedHTML = strip_tags($randomHTML);
return [
'body' => $randomHTML,
'text' => str_limit($trimedHTML, 509, '...')
];
});
感谢任何帮助。 <3
你可以试试这样的东西,但这可能会打断硬道理
substr($trimedHTML, 0, 512) . '...'
如果你不想截断最后一个字,你可以这样做,但不会总是给你恰好 512 个字符,因为下一个字可能太大...
$text=$trimedHTML;
if (preg_match('/^.{1,512}\b/s', $trimedHTML, $match))
{
$text=$match[0] . ( strlen($match[0]) < strlen($trimedHTML) ? "..." : "" );
}
并使用 $text 变量代替 str_limit($trimedHTML, 509, '...')
此代码与此答案中的代码完全相同:
Making sure PHP substr finishes on a word not a character
虽然这可能被认为是 "another question" 所以...
我正在创建一个 博客,它使用 Faker 工厂生成 演示数据 .我有一个生成的 Post 模型 ,它有一个正文字段,其中包含随机生成的 HTML 以及文本字段,它是通过剥离正文中的标签和限制接收到的数据512 个字符。 str_limit 工作正常,只是我需要将 text 剪掉,同时将其保留在 512 [=18] =]极限.
这是我的工厂:
<?php
use Faker\Generator as Faker;
$factory->define(Provar\Forum\Post::class, function (Faker $faker) {
$randomHTML = Purifier::clean($faker->randomHtml(2,3));
$trimedHTML = strip_tags($randomHTML);
return [
'body' => $randomHTML,
'text' => str_limit($trimedHTML, 509, '...')
];
});
感谢任何帮助。 <3
你可以试试这样的东西,但这可能会打断硬道理
substr($trimedHTML, 0, 512) . '...'
如果你不想截断最后一个字,你可以这样做,但不会总是给你恰好 512 个字符,因为下一个字可能太大...
$text=$trimedHTML;
if (preg_match('/^.{1,512}\b/s', $trimedHTML, $match))
{
$text=$match[0] . ( strlen($match[0]) < strlen($trimedHTML) ? "..." : "" );
}
并使用 $text 变量代替 str_limit($trimedHTML, 509, '...')
此代码与此答案中的代码完全相同: Making sure PHP substr finishes on a word not a character 虽然这可能被认为是 "another question" 所以...