2011-10-30 44 views
0

是否有人知道如何從字符串中刪除前幾個字符並在PHP中刪除它們。PHP獲得前幾個字符並從字符串中刪除

像在字符串「str_filename」中,我需要刪除「str_」並保存「文件名」。

但它必須刪除儘可能多的字符以達到「_」。

換句話說,我需要刪除所有的字符,直到包括字符串中的第一個「_」。

回答

5

你可以這樣做:

if (strpos($string, '_') !== false) 
    $string = substr($string, strpos($string, '_') + 1); 

它的工作原理,你可以在這裏看到:http://codepad.org/g12ENLGY

注意:因爲你的字符串不能有 '_' 字符的if是非常有用的。

+0

謝謝你很完美 – Olokoo

+0

@ Ian34很高興幫助你。 –

+1

順便說一句,通常人們會做'if(false!== $ pos = strpos($ string,'_'))$ string = substr($ string,$ pos + 1);'保存重複的strpos;) – NikiC

1

您可以使用類似:

$files = explode("_", $filename); 
echo $files[1]; 

所以這將拆分對_字符的字符串,然後回聲第二部分(下劃線後)。

雖然這只是假設只有一個下劃線。

請參閱http://www.php.net/manual/en/function.explode.php

+0

很好,你指定這個解決方案只能用一個下劃線。 ;) –

1

比使用explodesubstr另外一個解決方案已經提到您使用正則表達式可以解決這個問題:

^(?:[^_]*_)(.*)$ 

下面是使用它的一個例子:

$str = "str_filename"; 
$pattern = "/^(?:[^_]*_)(.*)$/"; 
preg_match($pattern, $str, $matches); 

echo $matches[1]; //prints "filename"