获取一部分字符串



什么是最佳实践 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
?>

最新更新