2014-12-13 38 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