0

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

我想获得“/”和“.htm”之间的值。这里:531613490

任何想法 ?

4

2 回答 2

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

这是一个演示:http ://codepad.viper-7.com/5kjEj6

于 2013-09-08T21:06:33.887 回答
0

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

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

  • 它不会http://www.mywebsite/456754567.htm/531613490.htm?menu=contact'像 Joseph Silber 的解决方案那样失败。


<?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 );
于 2013-09-08T21:13:14.563 回答