Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取字符串的一部分_Php_Regex - Fatal编程技术网

Php 获取字符串的一部分

Php 获取字符串的一部分,php,regex,Php,Regex,获得最佳实践是什么 584ef6a14e69e 字符串不足/files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg ? 假设所有数据都不是常数。我需要在最后一个斜杠之后和减号之前使用符号。假设它始终是-120.jpg,并且您要获取的部分由a-z和0-9个字符组成,您可以使用regex执行以下操作: <?php preg_match( '/([a-z0-9]+)-120\.jpg$/', '/files/028ou2p5g

获得最佳实践是什么 584ef6a14e69e 字符串不足/files/028ou2p5g/blogs/70cw99r5k/584ef6a14e69e-120.jpg ?


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

假设它始终是-120.jpg,并且您要获取的部分由a-z和0-9个字符组成,您可以使用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]);

您可能需要更多地使用正则表达式,以便做一些更符合您需要的事情—测试长度、大小写敏感度、放入字符串…

使用适当的工具,避免猜测。这将获取不带扩展名的文件名,然后获取-之前的所有内容:

<?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

?>
或稍短一点:

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

parse_url最有可能作为regex的替代品来实现这一点。例如:字符串的一致性是什么?似乎您已经问了类似的问题,但问题没有标记为已解决。对我来说,这似乎是一个重复的问题。现在有人突然给出了答案;所以评论?弗雷德,那个话题没有给我完整的答案,我会删除它,集中精力在这个话题上。如果一切都是可以改变的呢?我的意思是,我只想要最后一个斜杠之后和减号之前的符号。奇怪,但它给了我我想要的584ef6a14e69e,而不带-120:他的文件名似乎有一个标准,所以如果它一直存在,那就不会有问题。当然,我会增加一些额外的安全性。现在应该更好了?很好,但当我告诉你它正好满足了我的要求时,我很满意:我有一个标准的“-”符号。所以你的解决方案是完美的。谢谢哇,那就更好了。但我已经给了安德鲁解决方案。很抱歉给你加分!非常感谢!完成:顺便问一下,从该字符串获取扩展的最佳实践是什么?有类似basename的东西吗?
$result = strstr(basename($string), '-', true);