拆分相当复杂的字符串需要帮助

问题描述 投票:1回答:1

我有一个类似这样的字符串:

../../FolderName$Username$Password

我需要将这三个东西(路径到文件夹,用户名和密码)分成各自的变量,我遇到了一些麻烦。

$path = substr($_REQUEST["filename"],0, strpos($_REQUEST["filename"],'$',0)); //Gets the filepath SUCCESSFULLY

$username = substr($_REQUEST["filename"],strpos($_REQUEST["filename"],'$',0),strpos($realtmp,'$',strpos($_REQUEST["filename"],'$',0))); 

//Error, can't get the username properly, it is empty so I probably have a syntax error, but in general I don't know how to structure it.
php
1个回答
0
投票

正则表达式是解决此问题的最佳方法...正则表达式捕获组[1]包含所有内容,但不包括“$”的第一个实例。捕获组[2]的工作方式相同,捕获所有内容但不包括“$”的第二个实例。捕获组[3]包括字符串结尾的所有内容。

<?php
  $Filename= 'filename$username$password';
  preg_match('/([^$]*)[$]([^$]*)[$]([^$]*)/', $Filename, $re);
  $File = $re[1];
  $Username = $re[2];
  $Password = $re[3];
  echo "File:{$File}\n";
  echo "Username:{$Username}\n";
  echo "Password:{$Password}\n";
?>

编辑:但是,如其他答案所述,永远不建议将密码存储为纯文本

编辑2:([^ $] *)表示您正在“捕获一组”“一切都符合$”字符。

© www.soinside.com 2019 - 2024. All rights reserved.