2010-07-18 30 views
1

-之後可以使用哪個字符串函數去除所有內容?字符串未預定義,因此rtrim()不起作用。 ?使用哪個PHP字符串函數?

9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png 1

回答

6

使用 split explode功能和 「 - 」 字符作爲分隔符。它會返回一個字符串數組。如果你只關心第一個破折號之前的信息,只需使用返回數組的第零個索引。

編輯:
對不起。在蟒蛇世界生活了好幾個月之後,分裂成爲首先想到的事情。 explode是正確的功能。

編輯2:
striplstrip,和rstrip意在用於修整掉空白串的端部(S)。

+3

推薦棄用的函數? Hmmmm – quantumSoup 2010-07-18 00:56:27

1

這要看幾許?我會推薦使用explode,並且只是爲你想要的字符串部分獲取數組元素。檢查出來:http://php.net/explode

同樣,這將是非常依賴於字符串中劃線的數量,並且可能需要額外的邏輯。

4

你可以使用substrstrpos

$id = substr($path, 0, strpos($path, '-')); 

或可替代preg_replace

$id = preg_replace('/(.*?)-.*/', '\1', $path); 
1

我相信他想擺脫最右邊的 - 。在這種情況下,你可以使用正則表達式:

$s = '9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1'; 
$str = preg_replace('!-[^-]*$!', '', $s); 

echo $str; // outputs 9453-abcafaf3ceb895d7b1636ad24c37cb9f 
2

如果您知道該字符串的左側部分總是數字,你可以使用PHP的自動類型轉換,只是把它添加到零。 (假設你的意思是第一個連字符)

試試這個:

print 0 + '9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1'; //outputs 9453

1

可能比preg_replace函數快:

$str = '9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1'; 

$str = explode('-', $str); 
array_pop($str); 
$str = implode('-', $str) . '-'; 

// result = 9453-abcafaf3ceb895d7b1636ad24c37cb9f- 
0

如果你要排除的第一個連字符之前的一切並連接一切否則,你可以這樣做:

<?php 
$str='9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1'; 

$str = explode('-', $str); 
$count = count($str); 

// So far we have the string exploded but we need to exclude 
// the first element of the array and concatenate the others 

$new = ''; // This variable will hold the concatenated string 

for($i=1;$i<$count;++$i){ 
    $new.=$str[$i]; 
} 

echo $new; // abcafaf3ceb895d7b1636ad24c37cb9f100.png?1 
?> 

因此,基本上,您將循環遍歷元素並將它們連接起來,但現在我們正在跳過第一個元素。