解析百度图片搜索结果json中objURL图片原始地址函数
<?php $str = 'ippr_z2C$qAzdH3FAzdH3Fojgojg_z&e3Bf5f5_z&e3Bv54AzdH3FrAzdH3Fda8a8a8nAzdH3Fda8a8a8n8m9bdc-8a0abn8cdb_z&e3B3r2'; function baidtu_uncomplie($k) { $c = array('_z2C$q', '_z&e3B', 'AzdH3F'); $d = array('w' => "a", 'k' => "b", 'v' => "c", '1' => "d", 'j' => "e", 'u' => "f", '2' => "g", 'i' => "h", 't' => "i", '3' => "j", 'h' => "k", 's' => "l", '4' => "m", 'g' => "n", "5" => "o", 'r' => "p", 'q' => "q", "6" => "r", 'f' => "s", 'p' => "t", "7" => "u", 'e' => "v", 'o' => "w", "8" => "1", 'd' => "2", 'n' => "3", "9" => "4", 'c' => "5", 'm' => "6", "0" => "7", 'b' => "8", 'l' => "9", 'a' => "0", '_z2C$q' => ":", '_z&e3B' => ".", 'AzdH3F' => "/"); if (!$k || strpos($k, "http")) return $k; $j = $k; foreach ($c as $value) { $j = str_replace($value, $d[$value], $j); } $arr = str_split($j); foreach ($arr as $k => $v) { if (preg_match('/^[a-w\d]+$/', $v)) $arr[$k] = $d[$v]; } return implode('', $arr); }print_r(baidtu_uncomplie($str));
.net版
string[] c = { "_z2C$q", "_z&e3B", "AzdH3F" }; Dictionary<String, String> d = new Dictionary<string, string>(); d.Add("w", "a"); d.Add("k", "b"); d.Add("v", "c"); d.Add("1", "d"); d.Add("j", "e"); d.Add("u", "f"); d.Add("2", "g"); d.Add("i", "h"); d.Add("t", "i"); d.Add("3", "j"); d.Add("h", "k"); d.Add("s", "l"); d.Add("4", "m"); d.Add("g", "n"); d.Add("5", "o"); d.Add("r", "p"); d.Add("q", "q"); d.Add("6", "r"); d.Add("f", "s"); d.Add("p", "t"); d.Add("7", "u"); d.Add("e", "v"); d.Add("o", "w"); d.Add("8", "1"); d.Add("d", "2"); d.Add("n", "3"); d.Add("9", "4"); d.Add("c", "5"); d.Add("m", "6"); d.Add("0", "7"); d.Add("b", "8"); d.Add("l", "9"); d.Add("a", "0"); d.Add("_z2C$q", ":"); d.Add("_z&e3B", "."); d.Add("AzdH3F", "/");
//字符串按长度截图 public string[] SplitByLen(string str, int separatorCharNum) { if (string.IsNullOrEmpty(str) || str.Length <= separatorCharNum) { return new string[] { str }; } string tempStr = str; List<string> strList = new List<string>(); int iMax = Convert.ToInt32(Math.Ceiling(str.Length / (separatorCharNum * 1.0)));//获取循环次数 for (int i = 1; i <= iMax; i++) { string currMsg = tempStr.Substring(0, tempStr.Length > separatorCharNum ? separatorCharNum : tempStr.Length); strList.Add(currMsg); if (tempStr.Length > separatorCharNum) { tempStr = tempStr.Substring(separatorCharNum, tempStr.Length - separatorCharNum); } } return strList.ToArray(); }
public string baidtu_uncomplie(string str, string[] c, Dictionary<String, String> d)
{
if (!(str!=null) || str.Contains("http"))
return str;
string j=str;
foreach(string s in c){
j=j.Replace(s,d[s]);
}
string[] arr=SplitByLen(j,1);
for (int i = 0; i < arr.Length; i++)
{
try
{
if (Regex.IsMatch(d[arr[i]], @"^[a-w\d]+$"))
{
arr[i] = d[arr[i]];
}
}
catch //不匹配的不做处理: ". : /"
{
}
}
string url=string.Join("",arr);
return url;
}