得到一部分字符串

时间:2016-12-12 19:41:44

标签: php regex

获得最佳做法是什么 的 584ef6a14e69e 超出字符串/files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg

假设所有数据都不是常数。在最后一次斜线之后和减号之前我需要符号。

3 个答案:

答案 0 :(得分:2)

使用合适的工具,这样就不会有任何猜测。这将获取没有扩展名的文件名,然后是-

之前的所有内容
$string = '/files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg';
$result = strstr(pathinfo($string, PATHINFO_FILENAME), '-', true);

或略短:

$result = strstr(basename($string), '-', true);

答案 1 :(得分:0)

假设它始终为-120.jpg且您想要获得的部分由a-z和0-9个字符组成,您可以按照以下方式(使用正则表达式)执行:

<?php

preg_match(
    '/([a-z0-9]+)-120\.jpg$/',
    '/files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg',
    $matches
);

var_dump($matches[1]);

否则,如果总是一个数字:

<?php

preg_match(
    '/([a-z0-9]+)-[0-9]+\.jpg$/',
    '/files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg',
    $matches
);

var_dump($matches[1]);

您可能希望使用正则表达式进行更多操作,以便能够满足您的需求(测试长度,区分大小写,放置在字符串中......)

答案 2 :(得分:0)

<?php

$string = '/files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg';
$string = basename($string);

// remove all characters after and including '-' if it exists in string
$pos = strpos($string, '-');
if ($pos !== false)
    $string = substr($string, 0, $pos);

echo $string; // outputs: 584ef6a14e69e

?>