Project

General

Profile

Actions

Feature #14236

closed

(Feature suggestion) Improved "crop" function.

Added by Peter Klein over 20 years ago. Updated over 18 years ago.

Status:
Closed
Priority:
Should have
Category:
Backend API
Target version:
-
Start date:
2004-07-14
Due date:
% Done:

0%

Estimated time:
PHP Version:
Tags:
Complexity:
Sprint Focus:

Description

Hi list. here's a small update suggestion for the TS crop function. It adds
a 3rd parameter to the crop function. (100% compatible with the existing
crop function)

When the 3rd parameter (boolean) is set, then the crop function will crop at
the nearest space.

-- cut --
/** * Implements the stdWrap property "crop" which is a modified "substr"
function allowing to limit a string lenght to a certain number of chars
(from either start or end of string) and having a pre/postfix applied if the
string really was cropped. * * @param string The string to perform the operation on * @param string The parameters splitted by "|": First parameter is the
max number of chars of the string. Negative value means cropping from end of
string. Second parameter is the pre/postfix string to apply if cropping
occurs. Third parameter is a boolean value. If set then crop will be applied
at nearest space. * @return string The processed input value. * @access private * @see stdWrap()
*/
function crop($content,$options) {
$options = explode('|',$options);
$chars=intval($options0);
$afterstring=trim($options1);
$crop2space = trim($options2);
if ($chars) {
if (strlen($content)>abs($chars)) {
if ($chars<0) {
$content= substr($content,$chars);
$trunc_at = strpos($content, ' ');
$content = ($trunc_at&&$crop2space)?$afterstring.substr($content,
$trunc_at):$afterstring.$content;
} else {
$content = substr($content, 0, $chars);
$trunc_at = strrpos($content, ' ');
$content = ($trunc_at&&$crop2space)?substr($content, 0,
$trunc_at).$afterstring:$content.$afterstring;
}
}
}
return $content;
}

-- cut --

Try out this example with the extended crop function..
-- cut --
temp.test = COA
temp.test {
10 = TEXT
10.value = She got a great assistent
10.crop = 19|..
10.wrap = Standard crop at 19 chars=[|]<br>

20 = TEXT
20.value = She got a great assistent
20.crop = 19|..| 1
20.wrap = Space crop at 19 chars=[|]&lt;br&gt;
}
-- cut --

Output of test example:

Standard crop at 19 chars=[She got a great ass..]
Space crop at 19 chars=[She got a great..]

---
Peter Klein / Umloud ApS

Not really a bug, but Peter Niederlag suggested that I post it here anyway..

(issue imported from #M213)

Actions #1

Updated by Michael Stucki about 20 years ago

Looks very useful, thank you!

Actions #2

Updated by Michael Stucki about 20 years ago

Well, it has already been implemented in 3.7.0! :-)
However the comment about the 3rd parameter was missing, I did add it now.

Actions

Also available in: Atom PDF