Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用substr从包含多个字符的字符串中获取凭据并将其存储在变量中_Php_Regex_Php 7 - Fatal编程技术网

Php 如何使用substr从包含多个字符的字符串中获取凭据并将其存储在变量中

Php 如何使用substr从包含多个字符的字符串中获取凭据并将其存储在变量中,php,regex,php-7,Php,Regex,Php 7,大家好,我有一个字符串,包含ServerName、databaseName、用户名和密码,如下所示 服务器名称::IMACW10\COZMOSQLEXPRESS@database\u name::onetwotherpet用户名::pauline\u pet databasePass::root 我需要找到一种方法来substr,获取databaseName、ServerName、Username和pass,并将它们存储在变量中,以便能够使用凭据连接到服务器 在子字符串之后,我希望它们采用以下格

大家好,我有一个字符串,包含ServerName、databaseName、用户名和密码,如下所示

服务器名称::IMACW10\COZMOSQLEXPRESS@database\u name::onetwotherpet用户名::pauline\u pet databasePass::root

我需要找到一种方法来substr,获取databaseName、ServerName、Username和pass,并将它们存储在变量中,以便能够使用凭据连接到服务器

在子字符串之后,我希望它们采用以下格式

这里是您试图实现的非正则版本

$str = "server_name::IMACW10\COZMOSQLEXPRESS @database_name::OneTwoThreePet username::pauline_pet databasePass::root";
$test = explode(" ", $str);
$array = array();
foreach($test as $key){
    $newkey = strtok($key,":");
    $array[$newkey] = substr($key, strpos($key, ":") + 2);   
}
list($server, $dbname, $username, $pass) = array_values($array);
echo '$serverName='.$server.'<br> $databaseName='.$dbname.'<br> $username='.$username.'<br> $pass='.$pass;

我希望这可能会对您有所帮助。

对于示例数据,您可以首先使用空格,然后对每个项目使用explode再次使用
,并从数组中获取第二个值
[1]

然后您可以使用例如来创建变量

$str = "server_name::IMACW10\COZMOSQLEXPRESS @database_name::OneTwoThreePet username::pauline_pet databasePass::root";
list($serverName, $databaseName, $username, $pass) = array_map(function ($x) {
    return explode('::', $x)[1];
}, explode(' ', $str));

echo sprintf("servername:%s<br>databasename:%s<br>username:%s<br>pass:%s",
    $serverName,
    $databaseName,
    $username,
    $pass
);

Regex将是解决这个问题的方法,添加Regex标记以获得一些Regex pro的involved@LiamG添加感谢扫描请直接发布文本而不是截图。请删除图像并将实际字符串放在此处。有关如何编写一个人们更愿意回答的好问题的帮助,请参阅。开发人员应该编写代码,而不是在互联网上乞求。
$str = "server_name::IMACW10\COZMOSQLEXPRESS @database_name::OneTwoThreePet username::pauline_pet databasePass::root";
list($serverName, $databaseName, $username, $pass) = array_map(function ($x) {
    return explode('::', $x)[1];
}, explode(' ', $str));

echo sprintf("servername:%s<br>databasename:%s<br>username:%s<br>pass:%s",
    $serverName,
    $databaseName,
    $username,
    $pass
);
servername:IMACW10\COZMOSQLEXPRESS
databasename:OneTwoThreePet
username:pauline_pet
pass:root