Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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 从输出中提取数据_Php - Fatal编程技术网

Php 从输出中提取数据

Php 从输出中提取数据,php,Php,我的屏幕上显示了分配给变量的以下输出 <pre> $content = First Name: ajkhfsadf Last Name: asdfasf password: jkasdfhasdf2234h234j23 (encrypted. variable length) objectClass: asdfjkashdf </pre> 是否有一种方法可以仅选择密码行,并将加密密码替换为*,而不管其在输出中的位置如何?您使用的是PHP。我假设您一次性读取整个输出并将其

我的屏幕上显示了分配给变量的以下输出

<pre>
$content = First Name: ajkhfsadf
Last Name: asdfasf
password: jkasdfhasdf2234h234j23 (encrypted. variable length)
objectClass: asdfjkashdf
</pre>
是否有一种方法可以仅选择密码行,并将加密密码替换为*,而不管其在输出中的位置如何?

您使用的是PHP。我假设您一次性读取整个输出并将其存储在变量
$var

首先,使用linebreak
\n
作为delimeter分解
$var
。现在所有行都是分开的

现在,您在行周围循环,进一步分解
上的每一行,并检查新数组的第一个组件,查看它是否匹配
密码。重建数组(使用)就完成了

好处:通过将
$password
的所有字符替换为星号,攻击者可以知道密码包含多少字符(除非您的加密方案输出固定长度的字符串)。

您可以使用PHP的。我假设您一次性读取整个输出并将其存储在变量
$var

首先,使用linebreak
\n
作为delimeter分解
$var
。现在所有行都是分开的

现在,您在行周围循环,进一步分解
上的每一行,并检查新数组的第一个组件,查看它是否匹配
密码。重建数组(使用)就完成了


额外好处:通过将
$password
的所有字符替换为星号,攻击者可以知道密码包含多少字符(除非加密方案输出固定长度的字符串)。

响应您的评论时,从数据库检索该值时无需屏蔽该值,或者您正在使用的存储设备

您需要做的是使文本框在HTML中看起来像这样:


不过,请注意,这不是很安全


您最终想要实现什么?

响应您的评论,那么您在从数据库或正在使用的存储中检索该值时,无需屏蔽该值

您需要做的是使文本框在HTML中看起来像这样:


不过,请注意,这不是很安全


您最终的目标是什么?

您这样做是为了让您的文本框在密码字段中只显示*?请澄清!是的,这是正确的,因为我不想透露密码,即使它是加密的。你这样做是为了让你的文本框只显示*的密码字段?请澄清!是的,这是正确的,因为我不想透露密码,即使它是加密的。但愿我知道正则表达式:/I我认为php中没有名为replace_regexp的函数。我得到函数错误。调用未定义函数replace_regexp()Brain fart,它是preg_replace+1,因为它比我的答案简单得多。但愿我知道正则表达式:/I我认为php中没有名为replace_regexp的函数。我得到函数错误。调用未定义函数replace_regexp()Brain fart,它是preg_replace响应来自计算机上运行的shell脚本。我只是想用****来屏蔽密码字段,响应来自计算机上运行的shell脚本。我只是想用****来屏蔽密码字段,不管加密密码的长度如何,我都会用8颗星来替换它,或者一起删除该字段。不管加密密码的长度如何,我都会用8颗星来替换它,或者一起删除该字段。
$word1 = "password: ";
$word2 = "objectClass";
$word3 = "Password: ******** \n";
$between=substr($contents, strpos($contents, $word1), strpos($contents, $word2) - strpos($contents, $word1));
$output = str_replace($between,$word3,$contents);
$string = preg_replace('/Password: .*/', 'Password: ********', $string);
<input type="password" value="...Stored Password...">