繁体   English   中英

php Str_replace函数

[英]php Str_replace Function

我有以下2个数组,我希望从中替换变量。 但是我的问题是如何分辨不替换%XX格式的变量。 现在, 0将被替换为%30 ,然后将再次被%%330替换(将3替换为%33 )。 任何帮助,不胜感激。

$URL_Chars=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','-','.','_','~',':','/','?','#','[',']','@','!','$','&','\'','(',')','*','+',',',';','=','%');

$URL_Encoded_Chars=array('%41','%42','%43','%44','%45','%46','%47','%48','%49','%4A','%4B','%4C','%4D','%4E','%4F','%50','%51','%52','%53','%54','%55','%56','%57','%58','%59','%5A','%61','%62','%63','%64','%65','%66','%67','%68','%69','%6A','%6B','%6C','%6D','%6E','%6F','%70','%71','%72','%73','%74','%75','%76','%77','%78','%79','%7A','%30','%31','%32','%33','%34','%35','%36','%37','%38','%39','%2D','%2E','%5F','%7E','%3A','%2F','%3F','%23','%5B','%5D','%40','%21','%24','%26','%27','%28','%29','%2A','%2B','%2C','%3B','%3D','%25');

$Hex_URL=str_replace($URL_Chars,$URL_Encoded_Chars,$Hex_URL); 

您知道可以使用e修饰符使用preg_replace来以一种更简洁的方式执行此操作:

echo preg_replace('/([A-Za-z0-9])/e', '"%".dechex(ord("\\1"))', 'Abc');
// outputs %41%62%63

如果还需要其他字符,只需将它们添加到方括号[] ,当然,如有必要,可以将它们转义。

解析字符串:一次选择一个聊天,如果它等于'%'并且char后面的数字是数字,请忽略后三,否则替换当前的char。

您可以使用1个关联数组设置替换规则:

$replacements= array("A"=>"%41","B"=>"%42"....);

我会这样做:

function myUrlencode($url) {
    $encodedUrl = '';

    foreach (str_split($url) as $char) {
        $encodedUrl .= '%'.dechex(ord($char));
    }

    return $encodedUrl;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM