PHP:获取最后两个指定字符之间的字符串
PHP: get string between the last two designated characters
我有一些图片,文件名是这样的:
- my-picture_001.79-420x230.jpg
- 我的图片-002-210x370.png
- 等...
无论文件名是什么,它总是以:" -NumberxNumber.Extension "
这里是:
“-420x230.jpg”和“-210x370.png”
我想要的是能够始终检索最后两个数字。
我尝试使用 "explode" 函数,但可能会有很多“-”和“.”。和文件名中的 "x" 它没有帮助。
我该怎么做?
谢谢。
您可以使用 strrchr 查找最后一次出现的“-”,并使用 return 从该点到结尾的其余字符串。从那里你应该能够轻松地提取你需要的东西。
我认为你应该使用正则表达式来提取这 2 个数字。
<?php
$reg = '/(\d*)x(\d*).\D*/i';
$string = 'my-picture_001.79-420x230.jpg';
preg_match($reg, $string, $matches);
//print the result
echo "<pre>";
print_r($matches);
echo "</pre>";
?>
/D代表非数字字符
/d代表数字字符
/D* 表示零个或多个非数字字符
我们要提取的字符将位于 ()...
我经常使用这个网站来玩正则表达式:
http://rubular.com/
这是 php
中关于正则表达式的教程
http://www.phpro.org/tutorials/Introduction-to-PHP-Regex.html
您可以使用 explode
,'-' 和 'x' 的数量无关紧要,因为您总是需要一个特定的。
$string = 'my-picture_001.79-420x230.jpg';
$last_half = end(explode('-', $string)); // '420x230.jpg'
$last_sec = reset(explode('.',$last_half)); // '420x230'
$values = explode('x', $last_sec);
echo $values[0] // '420'
echo $values[1] // '230'
我有一些图片,文件名是这样的:
- my-picture_001.79-420x230.jpg
- 我的图片-002-210x370.png
- 等...
无论文件名是什么,它总是以:" -NumberxNumber.Extension "
这里是: “-420x230.jpg”和“-210x370.png”
我想要的是能够始终检索最后两个数字。
我尝试使用 "explode" 函数,但可能会有很多“-”和“.”。和文件名中的 "x" 它没有帮助。
我该怎么做?
谢谢。
您可以使用 strrchr 查找最后一次出现的“-”,并使用 return 从该点到结尾的其余字符串。从那里你应该能够轻松地提取你需要的东西。
我认为你应该使用正则表达式来提取这 2 个数字。
<?php
$reg = '/(\d*)x(\d*).\D*/i';
$string = 'my-picture_001.79-420x230.jpg';
preg_match($reg, $string, $matches);
//print the result
echo "<pre>";
print_r($matches);
echo "</pre>";
?>
/D代表非数字字符
/d代表数字字符
/D* 表示零个或多个非数字字符
我们要提取的字符将位于 ()...
我经常使用这个网站来玩正则表达式:
http://rubular.com/
这是 php
中关于正则表达式的教程
http://www.phpro.org/tutorials/Introduction-to-PHP-Regex.html
您可以使用 explode
,'-' 和 'x' 的数量无关紧要,因为您总是需要一个特定的。
$string = 'my-picture_001.79-420x230.jpg';
$last_half = end(explode('-', $string)); // '420x230.jpg'
$last_sec = reset(explode('.',$last_half)); // '420x230'
$values = explode('x', $last_sec);
echo $values[0] // '420'
echo $values[1] // '230'