我的字符串如下:
long_string_part-another_long_string_part some_long_string_part-good still_good already_bad
我需要通过特定的令牌 ["-"," "]
(可能是未来的其他内容)来削减它们,如果完全被所有令牌字符串长度大于某些值我必须将它们剪切为最大允许长度并添加一些替换器。
更换后的字符串必须不大于允许的最大长度。
假设允许的字符串长度为10
且替换者为...
。
预期结果是:
long_st...-another... some_lo...-good still_good already...
怎么做?我认为使用正则表达式更容易实现。 我需要在 PHP 上实现这个算法。
$title_parts = preg_split('/[\s\-]+/', $title);
$allowed_word_length = 10;
$replacer = '...';
$is_title_changed = false;
foreach ($title_parts as $index => $title_part) {
if (mb_strlen($title_part) > $allowed_word_length) {
$title_parts[$index] = mb_substr($title_part, 0, ($allowed_word_length - mb_strlen($replacer))) . $replacer;
$is_title_changed = true;
}
}
if ($is_title_changed) {
$title = implode(' ',$title_parts);
}
在所有情况下,我的代码问题都是。