2010-08-30 37 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