PHP:根据其长度拆分字符串

时间:2020-09-11 13:03:15

标签: php string-length strlen meta-title

我使用4个部分来从内容中构建元标题。 现在,我想将元标题限制为55个字符,并从标题中切除部分内容。 但是我不想说一个字。相反,我想检查标题的长度,并从末尾删除部分内容,直到整个标题再次低于55。

例如,我使用以下部分:

  • $product_name =产品名称-如 MacBook Pro -11
  • $product_brand =品牌名称-如 Apple -5
  • $product_action =产品名称-在线购买-9
  • $product_store =产品名称-在商店名称上-9

这些都是 41个字符。所以一切都很好。

但是如果我有这样的内容( 75个字​​符):

Surface Pro X黑色64 GB,512 GB 5G / Wifi Microsoft在Storename上在线购买

我想将其简化为:

Surface Pro X黑色64 GB,512 GB 5G / Wifi Microsoft

因为标题是 55个字符以下。 我删除了product_actionproduct_store

此刻,我正在使用组合字符串并计算字符:

$product_title          = $product_name.' '.$product_brand.' '.$product_action.' '.$product_store;
$product_title_count    = strlen($product_title);

是否有一种智能的方式来生成这样的标题? 目前,我使用的if / else语句效果不佳。

2 个答案:

答案 0 :(得分:2)

这应该进行下去,它将在小于55个字符的长度处将字符串修剪为最接近的空格字符('')。

$i = strlen($product_title)-1;
while($product_title[$i] != ' ' || $i > 55){
    $i--;
}
$final_string = substr($product_title, 0, $i);

答案 1 :(得分:1)

在@Agnohendrix的代码之前输入

$product_title          = $product_name.' '.$product_brand.' '.$product_action.' '.$product_store;
$product_title_count    = strlen($product_title);

if($product_title_count > 55){
    $product_title          = $product_name.' '.$product_brand.' '.$product_action;
    $product_title_count    = strlen($product_title);
}
elseif($product_title_count > 55){
    $product_title          = $product_name.' '.$product_brand;
}