2014-07-09 69 views
2

我有這樣的代碼這裏之前:PHP獲得字符串都強調

$imagePreFix = substr($fileinfo['basename'], strpos($fileinfo['basename'], "_") +1);

這讓我的一切下劃線後,但我希望得到下劃線之前的一切,我將如何調整這個在下劃線之前獲取所有內容的代碼?

$fileinfo['basename']等於 'feature_00'

感謝

+0

第一個下劃線之後?如果你有多個下劃線怎麼辦? – Ray

回答

9

你應該使用簡單:

$imagePreFix = substr($fileinfo['basename'], 0, strpos($fileinfo['basename'], "_")); 

我看不出有任何理由使用explode創造額外的陣列剛剛拿到第一要素。

您也可以使用(在PHP 5.3+):

$imagePreFix = strstr($fileinfo['basename'], '_', true); 
2

我認爲這樣做最簡單的方法是使用explode

$arr = explode('_', $fileinfo['basename']); 
echo $arr[0]; 

這會將字符串拆分爲一個子字符串數組。數組的長度取決於有多少個實例_。例如

"one_two_three" 

將被分成數組

["one", "two", "three"] 

這裏的some documentation

3

如果您完全確定有總是至少有一個下劃線,你有興趣的第一種:

​​

其他的方式可以這樣做:

$str = "this_is_many_underscores_example"; 

$matches = array(); 

preg_match('/^[a-zA-Z0-9]+/', $str, $matches); 

print_r($matches[0]); //will produce "this" 

(可能regexp模式將需要調整,但爲了這個例子的目的,它工作得很好)。

1

如果你想在你的建議是什麼類型的一個老派的答案你仍然可以做到以下幾點:

$imagePreFix = substr($fileinfo['basename'], 0, strpos($fileinfo['basename'], "_"));