Cutting long words
| From: | Juan Germano | Date: | Thu, 01 Mar 2001 23:35:34 +0000 |
| Subject: | Cutting long words | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-42238@lists.php.net to get a copy of this message | ||
Hi. I use this function with the strings I'll be showing in tables to cut
strings too long without spaces.
To make it clear:
<table
width="50"><tr><td><?=$str?></td></tr></table>
The table will be 50px width if $str isn't too long. Let's say:
$str="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
The table goes to hell.
So:
function cut_text($res,$long=15,$max=20){
if ($max<=$long){$max=$long+2;}
$ant="";
while ($res!=$ant){
$ant=$res;
$res=addslashes($res);
$res= preg_replace ("/(\w){".$max.",}/im","'.substr
(\\0,0,$long).'
'.substr (\\0,$long,strlen('\\0')-$long).'",$res);
$res=" return '$res';";
$res=eval($res);
}
return $res;
}
For example:
$str="Hello Howwwwwwwwwwwww arrrrreeeeeee yyyooooooouuuuuu";
echo cut_text($str,7,10);
Results in:
Hello Howwwww wwwwwwww arrrrre eeeeee yyyoooo ooouuuuuu
The idea is: any word longer than 20 chars will split into a chunk of 15
and a chunk of 5. If you have a 45 chars string, it will leave you with 20,
20 and 5.
It works fine with simple text, but with characters like ", / , $, etc.
sometimes I have problems. I tried with quotemeta instead of addslashes but
the problem persists. Anyone have an idea?. If you want to test the code,
just try with
Testing \" quotes
Thanks in advance
Juan I. Germano
droctulft@yifan.net