提取文件名的一部分

时间:2010-10-18 22:04:41

标签: php regex

如果我有以下格式的字符串:location-cityName.xml如何仅提取cityName,即 - (破折号)和之间的单词。 (周期)?

5 个答案:

答案 0 :(得分:3)

合并strpos()substr()

$filename = "location-cityName.xml";

$dash = strpos($filename, '-') + 1;
$dot = strpos($filename, '.');

echo substr($filename, $dash, ($dot - $dash));

答案 1 :(得分:3)

试试这个:

$pieces = explode('.', $filename);
$morePieces = explode('-', $pieces[0]);
$cityname = $morePieces[1];

答案 2 :(得分:1)

有几种方法......这个方法可能没有上面提到的strpos和substr组合那么高效,但它很有趣:

$string = "location-cityName.xml";
list($location, $remainder) = explode("-", $string);
list($cityName, $extension) = explode(".", $remainder);

正如我所说的......在PHP中有很多字符串操作方法,你可以用很多其他方法来做。

答案 3 :(得分:1)

如果你愿意,这里也是获取位置的另一种方法:

$filename = "location-cityName.xml";
$cityName = preg_replace('/(.*)-(.*)\.xml/', '$2', $filename);
$location = preg_replace('/(.*)-(.*)\.xml/', '$1', $filename);

答案 4 :(得分:1)

这是一种基于正则表达式的方法:

<?php
$text = "location-cityName.xml";
if (preg_match("/^[^-]*-([^.]+)\.xml$/", $text, $matches)) {
  echo "matched: {$matches[1]}\n";
}
?>

这将打印出来:

matched: cityName