2017-04-10 21 views
0

有沒有一種方法可以在刪除一切之前包含點(。)的最後一個實例在字符串中?刪除PHP中句點前的字符串

我有以下這些字符串:

  1. packageName.appName.moduleName.eventName.pageNameX
  2. packageName.appName.moduleName.pageNameY
  3. packageName.appName.pageNameZ
  4. packageName.pageNameA

我想有:

  1. pageNameX
  2. pageNameY
  3. pageNameZ
  4. pageNameA

我曾嘗試:

preg_replace('/^.*.\s*/', '', $theString); 

,但它不工作。

+2

我認爲第二個點應該被轉義,即'\ .',否則就會被認爲是「任何字符」。 – halfer

+0

'preg_replace('/.*\./','',$ string);' –

回答

2

substr($str, strrpos($str, '.')+1);

strrpos()將返回字符串中的字符的最後一個實例的位置。在substr()之後使用該值+ 1作爲起始位置,以獲得所有內容。

+0

除非沒有點,否則這將工作得很好。 –

+0

他所有的示例數據都有。 –

+0

我沒有說他們沒有。 –

2

您可以搭配這些子與

$s = "packageName.appName.moduleName.eventName.pageNameX"; 
preg_match('~[^.]+$~', $s, $match); 
echo $match[0]; 

regex demoPHP demo

詳細

  • [^.]+ - 比.
  • $其它1個或多個字符 - 字符串的結尾。
+0

這是正確的。但我認爲最好使用'preg_match'而不是 – wormi4ok

+0

是的,對於獨立的字符串,當然。 –

0

此函數將使用句點作爲分隔符將程序包路徑拆分爲組件。然後它會在分割包路徑時使用數組中檢索到的組件的數量返回最後一個時間段之後的最後一個組件。

function get_package_name($in_package_path){ 

    // Split package path into components at the periods. 
    $package_path_components = explode('.',$in_package_path); 

    // Get the total number of items in components array 
    // and subtract 1 to get array index as array indexes start at 0. 
    $last_package_path_component_index = count($package_path_components)-1; 

// Return the last component of the package path. 
    return $package_path_components[$last_package_path_component_index] 
}