2017-02-03 82 views
1

我在this网站中发现了一个非常基本的JavaScript函数来编码文本。查看源代码,这是字符串替换代码:将javascript字符串替换函数翻译为php

txtEscape = txtEscape.replace(/%/g,'@'); 

因此字符串stackoverflow变得@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@77

我需要做在PHP相同的基本加密功能,但我真的不明白是什么/%/g呢。我想在PHP同样的功能会是这样的:

str_replace(/%/g,"@","stackoverflow"); 

但当然/%/g不起作用

+0

'.replace(/%/ g,'@');'只用''替换'%'字符,所以对'stackoverflow'字符串不做任何处理。你应该发布你的js的其余部分,以便找出诀窍。 :) –

回答

1

确实换掉一个字符,PHP函数是str_replace(有很多功能替换)。但是,该regex表达是不一样的:)

参见官方文档:http://php.net/manual/en/function.str-replace.php

在你的情况,你想@更换信%

g是一个正则表达式标志。并且//是分隔符以激活正则表达式模式:)

“g”标志表示正则表达式应针对字符串中的所有可能匹配进行测试。没有g标志,它只会测试第一个。

<?php 
echo str_replace('%', '@', '%73%74%61%63%6B%6F%76%65%72%66%6C%6F%77'); 
?> 

在PHP中,你可以使用标志用正则表达式:preg_replace & CIE。

逃生

看到这个职位:PHP equivalent for javascript escape/unescape 有两个函数stringToHexhexToString做你想做什么:)

事实上,你所提供的使用espace功能现场码的消息:

+0

感谢您的帮助,我已经尝试过您的脚本,但它只是用字符串替换%。网站中的脚本用'@ 61'替换字母'a',用'@ 25'替换字符'%'等等,这就是php脚本应该做的事 – Hyperion

+0

我编辑了我的上一个回复并提供了转义解决方案问题 :) –