階下には、いわゆる 56 サイト プログラムもありますが、これは非常に欺瞞的です。騙されるのが嫌なら、自分でサイトを作成する必要があります。
自分で収集したい場合は、自分の FLASH プレーヤーを使用して 56.com の flv を直接再生できます。無料の広告で他の人を助けるほど愚かなことはしないでください。
コードをコピー コードは次のとおりです:
$url = "http://www.56.com/u75/v_MTkwMTIwMjQ.html";
$html = @file_get_contents($url); preg_match_all("/var _oFlv_o = '([S|s] )'/isU", $html, $matches);
$o = decode56($matches[1][0]);
include_once " json.php"; //php が json
$o = str_replace("'", '"', $o); をサポートするように設定されていない場合に便利です。 >//print_r($o);
$swf = "http://www.56.com/n_" . str_replace(":88", "", str_replace(".56.com", "") , $o->img_host)) .
“_/” . str_replace(".56.com", "", $o->URL_host) .
"_/" . o->URL_sURL . $o->URL_ID .
"_/" . $o-> "_/" . $o->id . ".swf";
$flv = "http://hot-chinacache.56.com/flvdownload/" . $o->URL_sURL .
"/" . $o->user_id .
"@56.com_56flv_" .flv";パス: " . $swf; ;";
echo "FLV ファイル パス: " . $flv;
function decode56($str) {
デ;
$c1 = "";
$c3 = "";
$c5 = 配列1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、 -1、-1、- 1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1 、-1、-1、-1、-1、-1、-1、-1、-1、62、-1、-1、-1、63、52、53、54、55、56、57、 58,59,60,61 、-1、-1、-1、-1、-1、-1、-1、0、1、2、3、4、5、6、7、8、9、10 ,11,12,13, 14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26 ,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51 ,-1,-1, -1,-1,-1);
$c6 = charCodeAt($str, 0);
$c7 = ""; 🎜> $len = "" ;
$out = "";
$de = 1;
$str = substr($c7 , $c6);
}
$len = strlen($str);
$out = ""; $i < $len) {
do {
$c1 = $c5[charCodeAt($str, $i ) & 0xff];
do {
while($i < $len) && $c1 == -1) ;
if ($c1 == -1) Break;
$c2 = $c5[charCodeAt($str, $i ) & 0xff]; 🎜> }
while ($i < $len && $c2 == -1);
if($c2 == -1) ブレーク;
$out .= chr(($c1 << 2) | (($c2 & 0x30) >> 4));
do {
$c3 = charCodeAt($str, $i ) & 0xff;
if($c3 == 61) return $out;
$c3 = $c5[$c3];
}
while ($i < $len && $c3 == -1);
if($c3 == -1) ブレーク;
$out .= chr((($c2 & 0XF) << 4) | (($c3 & 0x3C) >> 2));
do {
$c4 = charCodeAt($str, $i ) & 0xff;
if($c4 == 61) return $out;
$c4 = $c5[$c4];
}
while ($i < $len && $c4 == -1);
if ($c4 == -1) break;
$out .= chr((($c3 & 0x03) << 6) | $c4);
}
$out を返す;
}
function charCodeAt($str, $i){
return ord(substr($str, $i, 1));
}
//该程序為技术交流,交流可加QQ群: 1714987
?>
复制代码代码如下:
define('HTML_AJAX_JSON_SLICE', 1);
define('HTML_AJAX_JSON_IN_STR', 2);
define('HTML_AJAX_JSON_IN_ARR', 4);
define('HTML_AJAX_JSON_IN_OBJ', 8);
define('HTML_AJAX_JSON_IN_CMT', 16);
define('HTML_AJAX_JSON_LOOSE_TYPE', 10);
define('HTML_AJAX_JSON_STRICT_TYPE', 11);
クラス HTML_AJAX_JSON
{
関数 HTML_AJAX_JSON($use=HTML_AJAX_JSON_STRICT_TYPE)
{
$this->use = $use;
}
function encode($var)
{
switch(gettype($var)) {
case 'boolean':
$var ? 'true' : 'false';
case 'NULL':
return 'null';
case '整数':
return sprintf('%d', $var);
case 'double':
case 'float':
return sprintf('%f', $var);
case 'string': // STRINGS ARE 期待される IN ASCII OR UTF-8 FORMAT
$ascii = '';
$strlen_var = strlen($var);
for($c = 0; $c < $strlen_var; $c ) {
$ord_var_c = ord($var{$c});
if($ord_var_c == 0x08) {
$ascii .= 'b';
} elseif($ord_var_c == 0x09) {
$ascii .= 't';
} elseif($ord_var_c == 0x0A) {
$ascii .= 'n';
} elseif($ord_var_c == 0x0C) {
$ascii .= 'f';
} elseif($ord_var_c == 0x0D) {
$ascii .= 'r';
} elseif(($ord_var_c == 0x22) || ($ord_var_c == 0x2F) || ($ord_var_c == 0x5C))
{ $ascii .= '\'.$var{ $c}; // 二重引用符、スラッシュ、スロッシュ
} elseif(($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F))
{ // 文字 U-00000000 - U-0000007F ( ASCII と同じ)
$ascii .= $var{$c}; //最も通常の ASCII 文字
elseif(($ord_var_c & 0xE0) == 0xC0) {
// 文字 U-0000008 0 - U-000007FF、マスク 110XXXXX、http://www を参照してください。 cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($var{$c 1})); $c =1;
$ascii .= sprintf('us', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
} elseif(($ord_var_c & 0xF0) == 0xE0) {
// 文字 U-00000800 - U-0000FFFF,マスク 1110XXXX、http://www.cl.cam.ac を参照してください。 uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($var{$c 1}), ord($var{$c 2})) ; $c =2;
$ascii .= sprintf('us', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
} elseif(($ord_var_c & 0xF8) == 0xF0) {
// 文字 U-00010000 - U-001FFFFF,マスク 11110XXX、http://www.cl.cam.ac を参照してください。 uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($var{$c 1}), ord($var{$c 2}), ord($var{$c 3})); $c =3;
$ascii .= sprintf('us', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
} elseif(($ord_var_c & 0xFC) == 0xF8) {
// 文字 U-00200000 - U-03FFFFFF, m 111110XX に質問してください。http://www.cl.cam.ac を参照してください。 uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($var{$c 1}), ord($var{$c 2}), ord($var{$c 3}), ord($var{$c 4})); $c =4;
$ascii .= sprintf('us', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
} elseif(($ ord_var_c&0xfe)== 0xfc){
//文字u-04000000-u-7fffffff、マスク1111110x、http://www.cl.ac.ac.uk/~mgk25/unicodeを参照してください。 html#utf-8
$char = pack('C*', $ord_var_c, ord($var{$c 1}), ord($var{$c 2}), ord($var{$c) 3})、単語($var{$c 4})、単語($var{$c 5})); $c =5;
$ascii .= sprintf('us', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
}
}
return sprintf('"%s"', $ascii);
case 'array':
if(is_array($var) && (array_keys($var) !== range(0, sizeof($var) - 1)))
sprintf を返す('{%s}',join(',',array_map(array($this,'name_value'),array_keys($var),array_values($var))));
return sprintf('[%s]', join(',', array_map(array($this, 'encode'), $var)));
case 'オブジェクト':
$vars = get_object_vars($var);
return sprintf('{%s}', join(',', array_map(array($this, 'name_value'), array_keys($vars), array_values($vars))));
デフォルト:
return '';
}
}
関数名_値($name, $value)
{
return (sprintf("%s:%s", $this->encode(strval) ($name)), $this->encode($value)));
}
関数 reduce_string($str)
{
$str = preg_replace('#^s*//(. )$#m', '', $str); // 「// ...」形式の単一行コメントを削除します
$str = preg_replace('#^s*/*(. )*/#Us', '', $str); // 文字列
$str = preg_replace('#/*(. )*/s*$#Us', '', $str); // 文字列
$str = trim($str); の末尾にある、「/* ... */」形式の複数行のコメントを削除します。 // 無関係なスペースを削除します
return $str;
}
関数 decode($str)
{
$str = $this->reduce_string($str);
switch(strto lower($str)) {
case 'true':
return true;
case 'false':
return false;
case 'null':
return null;
デフォルト:
if(is_numeric($str)) {
return ((float)$str == (integer)$str)
? (整数)$str
: (浮動小数点)$str;
elseif(preg_match('/^". "$/s', $str) || preg_match('/^'. '$/s', $str)) {
$delim = substr($str, 0, 1);
$chrs = substr($str, 1, -1);
$utf8 = '';
$strlen_chrs = strlen($chrs);
for($c = 0; $c < $strlen_chrs; $c ) {
$substr_chrs_c_2 = substr($c, 2);
$ord_chrs_c = ord($chrs{$c});
if($substr_chrs_c_2 == 'b') {
$utf8 .= chr(0x08); $c =1;
elseif($substr_chrs_c_2 == 't') {
$utf8 .= chr(0x09); $c =1;
elseif($substr_chrs_c_2 == 'n') {
$utf8 .= chr(0x0A); $c =1;
elseif($substr_chrs_c_2 == 'f') {
$utf8 .= chr(0x0C); $c =1;
} elseif($substr_chrs_c_2 == 'r') {
$utf8 .= chr(0x0D); $c =1;
elseif(($delim == '"') && (($substr_chrs_c_2 == '\"') || ($substr_chrs_c_2 == '\\') || ($substr_chrs_c_2 == ' \/'))) {
$utf8 .= $chrs{ $c};
elseif(($delim == "'") && (($substr_chrs_c_2 == '\'') || ($substr_chrs_c_2 == '\\') || ($substr_chrs_c_2 == ' \/'))) {
$utf8 .= $chrs{ $c};
elseif(preg_match('/\u[0-9A-F]{4}/i', substr($chrs, $c, 6))) { // 単一のエスケープされた Unicode 文字
$utf16 = chr(hexdec(substr($chrs, ($c 2), 2))) 。 chr(hexdec(substr($chrs, ($c 4), 2)));
$utf8 .= mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
$c =5;
elseif(($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F)) {
$utf8 .= $chrs{$c};
elseif(($ord_chrs_c & 0xE0) == 0xC0) {
$utf8 .= substr($chrs, $c, 2); $c = 1;
elseif(($ord_chrs_c & 0xF0) == 0xE0) {
$utf8 .= substr($chrs, $c, 3); $c = 2;
elseif(($ord_chrs_c & 0xF8) == 0xF0) {
$utf8 .= substr($chrs, $c, 4); $c = 3;
elseif(($ord_chrs_c & 0xFC) == 0xF8) {
$utf8 .= substr($chrs, 5); $c = 4;
} elseif(($ord_chrs_c & 0xFE) == 0xFC) {
$utf8 .= substr($chrs, $c, 6); $c = 5;
return $utf8;
} elseif(preg_match('/^[.*]$/s', $str) || preg_match('/^{.*}$/s', $str)) {
if($str{0} == '[') {
$stk = array(HTML_AJAX_JSON_IN_ARR);
$arr = array();
} else {
if($this->use == HTML_AJAX_JSON_LOOSE_TYPE)
$stk = array(HTML_AJAX_JSON_IN_OBJ);
$obj = array();
else {
$stk = array(HTML_AJAX_JSON_IN_OBJ);
$obj = new stdClass();
array_push($stk, array('what' => HTML_AJAX_JSON_ SLICE, 'where' => 0, 'delim' => false);
$chrs = substr($str, 1, -1);
$chrs = $this->reduce_string($chrs);
if($chrs == '') {
if(reset($stk) == HTML_AJAX_JSON_IN_ARR) {
$arr を返します。
else {
return $obj;
}
}
$strlen_chrs = strlen($chrs);
for($c = 0; $c <= $strlen_chrs; $c ) {
$top = end($stk);
$substr_chrs_c_2 = substr($chrs, $c, 2);
if(($c == $strlen_chrs) || (($chrs{$c} == ',') &&($top['what'] == HTML_AJAX_JSON_SLICE))) {
$slice = substr($chrs, $top['where'], ($c - $top['where']));
array_push($stk, array('what' => HTML_AJAX_JSON_SLICE, 'where' => ($c 1), 'delim' => false));
if(reset($stk) == HTML_AJAX_JSON_IN_ARR) { // 配列内にあるため、要素をスタックにプッシュするだけです
array_push($arr, $this->decode($スライス));
} elseif(reset($stk) == HTML_AJAX_JSON_IN_OBJ) { // オブジェクト内にあるため、プロパティ名を把握し、連想に要素を設定します配列、今のところ
if(preg_match ('/^s*(["'].*[^\]["'])s*:s*(S.*),?$/Uis', $slice, $parts)) { // " name":value ペア
$key = $this->decode($parts[1]);
$val = $this->decode($parts[2]);
if($this->use == HTML_AJAX_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
else {
$obj->$key = $val;
}
elseif(preg_match('/^s*(w )s*:s*(S.*),?$/Uis', $slice, $parts)) { // name:value pair, where name引用符で囲まれていない
$key = $parts[1];
$val = $this->decode($parts[2]);
if($this->use == HTML_AJAX_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
else {
$obj->$key = $val;
}
}
elseif((($chrs{$c} == '"') || ($chrs{$c} == " '")) && ($top['what'] != HTML_AJAX_JSON_IN_STR)) {// 引用符が見つかりましたが、文字列
array_push($stk, array('what' => HTML_A) JAX_JSON_IN_STR、 'where' => $c, 'delim' => $chrs{$c}));
//print("{$c}n で文字列の開始が見つかりました"); > elseif(($chrs{$c} == $top['delim']) && ($top['what'] == HTML_AJAX_JSON_IN_STR) && (($chrs{$c - 1} != "\" ) || ($chrs{$c - 1} == "\" && $chrs{$c - 2} == "\")) { // 引用文が見つかりました。文字列内にあります。エスケープされていません
array_pop($stk);
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 1 $c - $top['where']))."n");
} elseif(($chrs{$c} == '[') &&in_array($top['what'], array(HTML_AJAX_JSON_SLICE, HTML_AJAX_JSON_IN_ARR, HTML_AJAX_JSON_IN_OBJ))) { // 左括弧が見つかり、配列、オブジェクト、またはスライス内にあります
array_push($stk, array('what' => HTML_AJAX_JSON_IN_ARR, 'where' => $c, 'delim' => false));
//print("{$c}n で配列の開始が見つかりました");
elseif(($chrs{$c} == ']') && ($top['what'] == HTML_AJAX_JSON_IN_ARR)) { // 右括弧が見つかりました。配列
array_pop($stk);
//print("{$c} で配列の終端が見つかりました: ".substr($chrs, $top['where'], (1 $c - $top['where']))."n ");
elseif(($chrs{$c} == '{') && in_array($top['what'], array(HTML_AJAX_JSON_SLICE, HTML_AJAX_JSON_IN_ARR, HTML_AJAX_JSON_IN_OBJ))) { // 残っているものを見つけました-中括弧で囲んで、配列、オブジェクト、またはスライス内にあります
array_push($stk, array('what' => HTML_AJAX_JSON_IN_OBJ, 'where' => $c, 'delim' =>偽));
//print("{$c}n でオブジェクトの開始が見つかりました");
elseif(($chrs{$c} == '}') && ($top['what'] == HTML_AJAX_JSON_IN_OBJ)) { // 右中括弧が見つかりました。オブジェクト
array_pop($stk);
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 $c - $top['where']))."n ");
elseif(($substr_chrs_c_2 == '/*') && in_array($top['what'], array(HTML_AJAX_JSON_SLICE, HTML_AJAX_JSON_IN_ARR, HTML_AJAX_JSON_IN) _OBJ))) { // コメントの開始を見つけたので、配列、オブジェクト、またはスライス内にあります
array_push($stk, array('what' => HTML_AJAX_JSON_IN_CMT, 'where' => $c, 'delim' => false));
$c ;
//print("{$c} でコメントの開始が見つかりましたn");
} elseif(($substr_chrs_c_2 == '*/') && ($top['what'] == HTML_AJAX_JSON_IN_CMT)) { // コメントの終わりが見つかりました。今すぐ
array_pop($stk)
$c ;
for($i = $top['where']; $i <= $c; $i )
$chrs = substr_replace($chrs, ' ', $i, 1);
//print("{$c} でコメントの終わりが見つかりました: ".substr($chrs, $top['where '], (1 $c - $top['where']))."n"); if(リセット($stk) == HTML_AJAX_JSON_IN_ARR) {
return $arr;
} elseif(reset($stk) == HTML_AJAX_JSON_IN_OBJ) {
$obj を返す
}
}
}
}
}
if ( !function_exists("json_encode") || !function_exists("json_decode") ) {
include_once "json.php";
function json_encode($data) {
$json = new HTML_AJAX_JSON();
return $json->encode($data);
}
function json_decode($data) {
$json = new HTML_AJAX_JSON();
return $json->decode($data);
}
}
?>