PHP: разделить строку в зависимости от ее длины
Я использую 4 части для создания мета-заголовка из моего контента. Теперь я хочу ограничить мета-заголовок 55 символами и вырезать части из заголовка. Но я не хочу сокращать слово. Вместо этого я хочу проверить длину заголовка и удалить части с конца, пока весь заголовок снова не станет меньше 55.
Например, я использую следующие детали:
$product_name
= название продукта - например, MacBook Pro - 11$product_brand
= название бренда - например, Apple - 5$product_action
= название товара - купить онлайн - 9$product_store
= название товара - на Storename - 9
В совокупности это 41 символ. Так что все нормально.
Но если у меня будет что-то вроде этого (75 символов):
Surface Pro X черный 64 ГБ, 512 ГБ 5G/Wi-Fi Microsoft купить онлайн в Storename
Я хочу свести это к следующему:
Surface Pro X черный 64 ГБ, 512 ГБ 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, который не работает.
2 ответа
Это должно произойти, ваша строка будет обрезана до ближайшего пробела (' ') длиной менее 55 символов.
$i = strlen($product_title)-1;
while($product_title[$i] != ' ' || $i > 55){
$i--;
}
$final_string = substr($product_title, 0, $i);
Поместите это перед кодом @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;
}