<?php
function word_wrapper($text,$minWords = 3) {
$return = $text;
$arr = explode(' ',$text);
if(count($arr) >= $minWords) {
$arr[count($arr) - 2].= ' '.$arr[count($arr) - 1];
array_pop($arr);
$return = implode(' ',$arr);
}
return $return;
}
?>
Append Non-Breaking Space Between Last Two Words
Chris Coyier
on
You can shorten this to:
= $minWords)
? ' ' . array_pop($output)
: ' ' . array_pop($output);
$output = implode(' ',$output) . $widow;
return $output;
}
?>
EXACTLY what I needed. Thanks!
How to add non-breaking spaces to all words with less than 5 letters, not just 2 last?
Is there any update to the css selectors for this fix to be 100% css solution? I have bugged W3c for ages about this — “Ah yes that’s a good idea” — and then they don’t add it to spec.
Would be shorter I guess:
return (substr_count($text, ” “) > 1 && substr_count($text, ” “) >= $minWords-1 ? substr_replace(strrpos($text, ” “) , ” “, $lastspace, 1) : $text;
Maybe even
return (substr_count($text, ” “) > 1 && str_word_count($text) >= $minWords ? substr_replace(strrpos($text, ” “) , ” “, $lastspace, 1) : $text;
(both untestet)
Sorry. Second one should be
return (str_word_count($text) >= $minWords ? substr_replace(strrpos($text, ” “) , “ ”, $lastspace, 1) : $text;
$text = preg_replace( '|([^\s])\s+([^\s]+)\s*$|', '$1 $2', $text);