使用php获取两个位置之间的字符串部分

使用php获取两个位置之间的字符串部分,php,Php,我有一个字符串,比如“一些单词12345cm,还有一些单词” 我想从这个字符串中提取12345cm位。所以我得到了第一个数字的位置: $position_of_first_number = strcspn( "some words 12345cm some more words" , '0123456789' ); 然后是第一个编号的$position\u之后的第一个空格的位置 $position_of_space_after_numbers = strpos("some words 1234

我有一个字符串,比如
“一些单词12345cm,还有一些单词”

我想从这个字符串中提取
12345cm
位。所以我得到了第一个数字的位置:

$position_of_first_number = strcspn( "some words 12345cm some more words" , '0123456789' );
然后是第一个编号的
$position\u之后的第一个空格的位置

$position_of_space_after_numbers = strpos("some words 12345cm some more words", " ", $position_of_first_number); 
然后我想要一个函数,它返回字符串中第一个数字的
$position\u和第二个数字的
$position\u之间的部分


如何操作?

您可以使用。请注意,它需要一个起始位置和一个长度,您可以将其计算为起始位置和结束位置之间的差值。

由于您正在寻找一个类似于空白数字和空白字母的模式,我建议使用以下正则表达式:

$s=“一些单词12345cm更多单词”;
preg_match(“/\s(?P\d+[^\W\d_+)\s/”,$s,$matches);
echo$匹配项[“结果”];
12345厘米
解释模式

  • “/…/”
    限制了PHP中的模式

  • \s
    匹配任何空白字符

  • (?p…)
    命名以下模式

  • \d+
    匹配一个或多个数字

  • [^\W\d\]+
    匹配一个或多个Unicode字母(即非字母数字字符的任何字符;请参阅)

$s = "some words 12345cm some more words";
preg_match("/\s(?P<result>\d+[^\W\d_]+)\s/", $s, $matches);
echo $matches["result"];

12345cm