2014-12-13 39 views
0

我有這個形象的名字之間的字符串:very-nice-rose-123-3.jpgPHP如何削減2個符號

我如何能切到這個部分,並只接收最後一個破折號和圖像擴展之間的部分。在這個例子中我需要得到3

+0

你可以使用'爆炸()' – Alex 2014-12-13 08:55:55

+0

什麼短?沒有循環等? – Europeuser 2014-12-13 08:57:19

+0

你不需要循環任何東西 – Alex 2014-12-13 08:57:45

回答

5

您可以使用字符串函數,如explode()substr()

$file = explode('.', $file); 
$file = explode('-', $file[0]); 
echo end($file); 

demo

或者你可以使用正則表達式:

if (preg_match('~-?(\w+)\.\w+$~', $file, $match)) { 
    echo $match[1]; 
} 

demo

+0

聰明的,謝謝 – Europeuser 2014-12-13 09:03:27

+0

由於某種原因沒有想到正則表達式。按照我的觀點,這將是最好的解決方法。 – 2014-12-13 09:04:08

+0

正則表達式幾乎肯定效率較低。 'explode()'可能是最好的方法。我會做一些分析並回來。 – Nerixel 2014-12-13 09:08:33

1

我做的方式通常是:

<?php 

$num = strrev(
    explode(
     '-', 
     strrev($filename), 
     2 
    )[0] 
); 

文檔爲strrev()explode()

+0

謝謝先生們! – Europeuser 2014-12-13 09:03:48

0

通過正則表達式。

if (preg_match('~(?<=-)[^-.]+(?=\.[a-z]+$)~', $file, $match)) { 
    echo $match[0]; 
} 

OR

if (preg_match('~-([^-.]+)\.[a-z]+$~', $file, $match)) { 
    echo $match[0]; 
} 

DEMO