2010-08-30 65 views
3

我想通过删除第一个和最后一个字符来改变PHP中的字符串,但只在它们相等时才更改。根据模式更改字符串

让我举一些例子:

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

我该怎么办呢?

感谢您的帮助,基于正则表达式的解决方案的工作原理。

回答

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 
} 
+0

不这项工作为1个字符串如'a'?因为strlen('a') - 2 == -1 .. – Ishtar 2010-08-30 13:18:01