I want to replace any word which contains two capital letters .
here is my string
jennie-garth-jennie-garth-inner-city-arts-gala-october-17-2012-If9aSpTW
jennie-garth-jennie-garth3892-H9rDcbY
i want to replace -If9aSpTW with -
These -If9aSpTW
varies so I can't use str_replace
. I can identify with only two capital letter in one word. These words are at the end, but these types of words are appearing for 20% of total database values so I can't replace all last words.
The str_replace
is context unaware, nor can you use substr
since you need to check for 2 uppercase letters in the last non-hyphen chunk of the text. So you really have to stick to preg_replace
regex based replacement.
You may use the following regex:
preg_replace('/-(?:[^-]*[A-Z]){2,}[^-]*$/', '', $str);
See the regex demo .
The pattern matches:
-
- a hyphen (?:[^-]*[AZ]){2,}
- 2 or more occurrences (due to {2,}
limiting quantifier) of a sequence of:
[^-]*
[AZ]
- an uppercase [^-]*
- zero or more chars other than -
$
- end of string PHP :
$str = 'jennie-garth-jennie-garth-inner-city-arts-gala-october-17-2012-If9aSpTWe';
echo preg_replace('/-(?:[^-]*[A-Z]){2,}[^-]*$/', '', $str);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.