首页 > 解决方案 > 在php中从长字符串中提取特定字符串

问题描述

我有这个字符串“PAX 098-5503268037/ETAI/USD107.75/15MAY20/KTMVS31KL/10303171”并且想提取USD107.75。我有这个功能:

这里:

$str = PAX 098-5503268037/ETAI/USD107.75/15MAY20/KTMVS31KL/10303171;
$from = '/ETAI';
$to = '/';

    public function getStringBetween($str,$from,$to)
    {
        $sub = substr($str, strpos($str,$from)+strlen($from),strlen($str));
        return substr($sub,0,strpos($sub,$to));
    }

该函数只返回一个空字符串。

我错过了什么?

谢谢

标签: php

解决方案


如果你做一些调试......

public function getStringBetween($str,$from,$to)
{
    $sub = substr($str, strpos($str,$from)+strlen($from),strlen($str));
    echo $sub.PHP_EOL;
    return substr($sub,0,strpos($sub,$to));
}

你会看到临时输出是

/USD107.75/15MAY20/KTMVS31KL/10303171

当你然后寻找第一个/并提取到那个,那就是第一个字符。

一个简单的解决方案是+1在起始位置添加......

public function getStringBetween($str,$from,$to)
{
    $sub = substr($str, strpos($str,$from)+strlen($from)+1,strlen($str));       
    return substr($sub,0,strpos($sub,$to));
}

或者,您可以按照 u_mulder 的指示,explode()在 / 上,然后提取您想要的部分......

echo explode("/", $str)[2];

推荐阅读