我使用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_action
和product_store
。
此刻,我正在使用组合字符串并计算字符:
$product_title = $product_name.' '.$product_brand.' '.$product_action.' '.$product_store;
$product_title_count = strlen($product_title);
是否有一种智能的方式来生成这样的标题? 目前,我使用的if / else语句效果不佳。
答案 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;
}