Title |
Test
Find
Pattern Title
|
Expression |
^([\s\S]){1,20}([\s\.]) |
Description |
This pattern returns as much of the first x characters of a string as full words or sentences as a match, where x is currently 20. Change x to adjust the length supported in your database field.
I'm currently using this within a string shortening utility to shrink large text regions to word/sentance-boundary elements and appending an ellipsis as a text continuator. |
Matches |
Any text of any length | ...but will only 'match' the first 20 characters at a period or space. |
Non-Matches |
N/A |
Author |
Rating:
Shawn Hall
|
Source |
http://ReliableAnswers.com/ |
Your Rating |
|
Title: Using with PHP
Name: wamuonfraud
Date: 3/12/2006 9:07:21 PM
Comment:
Just what I was looking for. To use with PHP preg_match:
$maxlen = 500;
$regex = '%^([\s\S]){1,' . $maxlen . '}([\s\.\?!])%i';
$num_matches = preg_match($regex, $string, $_EXCERPT);
$excerpt = $_EXCERPT[0];
Title: Mr
Name: Woody
Date: 11/27/2005 5:34:11 PM
Comment:
Stuart's error is caused by not having delimiters around the regex, as required by PHP in functions like preg_match(). Just do this:
$pattern = '/^([\s\S]){1,20}([\s\.])/';
Notice the slashes at the beginning and end of the regex.
Use $pattern in your preg_match or other PHP statement.
Title: Stuart's PHP error
Name: Shawn K. Hall
Date: 7/17/2004 6:47:18 PM
Comment:
Sorry to hear about that, but it sounds like user error to me. I've never seen the error you describe in RegEx in PHP. PHP doesn't use all the same named entities anyway, so you'd have to use a regex like the one below in order to get similar functionality:
^(.{1,50})([ \f\n\r\t\v\.])
Title: Mr
Name: Stuart Wright
Date: 7/17/2004 3:46:13 PM
Comment:
The above doesn't work in PHP. Get an error :
No ending delimiter '^' found