php - 在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));
}
该函数只返回一个空字符串。
我错过了什么?
谢谢
解决方案
如果你做一些调试......
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];
推荐阅读
- javascript - 基于包含数组项的对象属性映射的数组
- python - 保持选定的树视图行固定
- java - 华为“新标签收集,标签为空或手机未对齐”消息
- azure - 使用 azure devops 部署到 azure Web 应用程序后无法访问 Web 应用程序
- amazon-dynamodb - DynamoDB - 无法读取项目:提供的关键元素与架构不匹配
- c# - 反序列化将 wpf 中 MainWindow 的内容设置为 null
- google-sheets - 使用 Google 表格/Excel 从今天的日期获取当前星期的星期日日期
- reactjs - 当我的状态是数组而不是对象时,如何使用减速器更新状态
- r - 通过 R 中行的平均分布合并 2 Data.frame
- c# - C# Evaluate Tree 表达式,其中叶节点是整数集