2012-05-11 49 views
0

我想最後一次出現之前得到字符串的一部分「 - 」,PHP模式匹配

例如,

$string1 = 'a-b-c-de-f-gfgh'; 

我想這部分返回:ABC-去F。當然,我不知道最後一部分的長度。

什麼是簡單的方法來做到這一點?

謝謝

+0

這麼多的方法-最後一次出現,你有什麼嘗試? – jeroen

回答

7
echo substr ($string1, 0, strrpos ($string1, '-')); 

strrpos()找到字符串最後一次出現, - 在這種情況下,和SUBSTR()將來自第0個字符,直到第n個字符的原始字符串由strrpos定義( )

1

使用strrpos()獲得的最後一個位置 「 - 」 和substr()它:

echo substr($string1, 0, strrpos($string1, "-")); 
0

作爲替代其他海報:

preg_match('/(.*)-[^-]+/', 'a-b-c-de-f-gfgh', $result); 

結果:

Array 
(
    [0] => a-b-c-de-f-gfgh-a 
    [1] => a-b-c-de-f-gfgh 
) 

雖然我喜歡Jeroens解決方案的更多。

0

你可以刪除最後一部分:

$string = preg_replace("|-[^-]+$|", "", $string); 
1

得到使用$x = strrpos($string1,'-'); 然後使用substr()從0返回decired字符串給$ x

echo substr ($string1, 0, $x);