获得最佳做法是什么
的 584ef6a14e69e
超出字符串/files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg
?
假设所有数据都不是常数。在最后一次斜线之后和减号之前我需要符号。
答案 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
?>