什么是最佳实践 584EF6A14E69E 从字符串中 /files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg
?
假设所有数据都不恒定。我需要在上次斜线和负号之前的符号。
使用适当的工具,因此没有猜测。这将获取文件名没有扩展名,然后在-
之前进行所有内容:
$string = '/files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg';
$result = strstr(pathinfo($string, PATHINFO_FILENAME), '-', true);
或略短:
$result = strstr(basename($string), '-', true);
假设它始终是-120.jpg
,并且您要获得的部分由A-Z组成,您可以按以下操作(使用REGEX):
<?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]);
您可能想使用 REGEX 进行更多播放,以便做一些适合您的需求的事情(测试长度,案例灵敏度,放在字符串中...)
<?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
?>