Change a string based on a pattern
I want to change a string in PHP by 开发者_开发技巧deleting the first and the last char but ONLY IF they are equal.
Let me give some examples:
' abc ' should become 'abc'
'abc a' should become 'bc '
' abc a' should not change
How do I do it?
Thanks for the help, the regex based solution works.
You can use the regex:
$str = preg_replace('~^(.)(.*)\1$~','$2',$str);
Regex explanation:
~
: Delimiters^
: Start anchor(.)
: match and remember a char ( here its the first char)(.*)
: match anything and remember\1
: recall the first match$
: End anchor$2
: recall the 2nd match
Alternatively you can do:
// if string has >1 char and 1st and last char as same.
if(strlen($str) > 1 && $str[0] == $str[strlen($str)-1]) {
$str = substr($str,1,strlen($str)-2); // extract the substring
}
精彩评论