在字符和字符串之间找到一个字符串?

时间:2013-09-08 21:04:56

标签: php regex

我有一个字符串:http://www.mywebsite/456754567/531613490.htm?menu=contact

我希望得到“/”和“.htm”之间的值。这里:531613490

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

if ( preg_match('~[^/]+(?=\.htm)~', $string, $matches) ) {
    echo $matches[0];
}

以下是演示:http://codepad.viper-7.com/5kjEj6

答案 1 :(得分:0)

我不知道你希望你的脚本有多灵活,但这是我的尝试:

  • 它总是占用路径的最后一部分

  • 正如约瑟夫·西尔伯的解决方案所做的那样http://www.mywebsite/456754567.htm/531613490.htm?menu=contact'不会失败。


<?php

$path = parse_url('http://www.mywebsite/456754567/531613490.htm?menu=contact', PHP_URL_PATH);
$pathParts = explode('/', $path);
$fullFilename = array_pop($pathParts);

// better use something like lastIndexOf(), this won't fail for 'xxx.abc.htm'
$filename = substr($fullFilename, 0, strpos($fullFilename, '.'));
var_dump( $filename );