根据模式更改字符串

时间:2010-08-30 13:07:03

标签: php regex string

我想通过删除第一个和最后一个字符来更改PHP中的字符串,但只要它们相等。

让我举几个例子:

' abc ' should become 'abc'
'abc a' should become 'bc '
' abc a' should not change

我该怎么办?

感谢您的帮助,基于正则表达式的解决方案正常运行。

1 个答案:

答案 0 :(得分:6)

您可以使用正则表达式:

$str = preg_replace('~^(.)(.*)\1$~','$2',$str);

正则表达式解释:

  • ~:分隔符
  • ^:启动锚点
  • (.):匹配并记住一个字符( 这里是第一个char)
  • (.*):匹配任何内容并记住
  • \1:召回第一场比赛
  • $:结束锚
  • $2:回想第二场比赛

或者你可以这样做:

// 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
}