PHP:在最后两个指定字符之间获取字符串

时间:2015-11-11 02:15:54

标签: php string explode

我有一些文件名看起来像这样的照片:

  • MY-picture_001.79-420x230.jpg
  • mypicture-002-210x370.png
  • 等...

无论文件名是什么,它总是以:“ - NumberxNumber.Extension”结束

这将是: “-420x230.jpg”和“-210x370.png”

我希望能够始终检索最后两个数字。

我尝试使用“爆炸”功能,但可能有很多“ - ”和“。”文件名中的“x”表示无效。

我该怎么做?

谢谢。

3 个答案:

答案 0 :(得分:1)

您可以使用strrchr查找" - "的最后一次出现。并从该点返回字符串的其余部分直到结束。从那里你应该能够轻松地提取你需要的东西。

答案 1 :(得分:1)

我认为你应该使用正则表达式来提取这两个数字。

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

答案 2 :(得分:1)

您可以使用explode,因为您总是需要特定的一个,所以&#39;和&#39; x的数量并不重要。< / p>

$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'