아래층에는 소위 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)
$o = json_decode($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_URL .
"_/" . $o->totaltime .
"_/" . . $o->id . ".swf";
$flv = "http://hot-chinacache.56.com/flvdownload/" . $o->URL_pURL
$o->URL_sURL .
"/" . $o->user_id .
"@56.com_56flv_" . $o->URL_URLid
echo "FLASH 파일 경로: " . $swf; ;";
echo "FLV 파일 경로: " . $flv;
$de = 0
function decode56($str) {
global $de; 🎜> $c1 = "" ;
$c2 = "";
$c3 = "";
$c4 = ""
$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,-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 = "";
if(!$de) {
$de = 1
$c7 = decode56($str); substr($c7, $c6 );
}
$len = strlen($str)
$i = 1;
$out = ""
; $len) {
do {
$c1 = $c5[charCodeAt($str, $i ) & 0xff]
do {
while($i < $len && $c1 == -1);
if ($c1 == -1) break;
do {
$c2 = $c5[charCodeAt($str, $i ) & 0xff];
동안에 ($i < $len && $c2 == -1);
if($c2 == -1) break;
$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) break;
$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;
}
함수 인코딩($var)
{
switch(gettype($var)) {
case 'boolean':
return $var ? '참' : '거짓';
case 'NULL':
'null'을 반환;
case '정수':
return sprintf('%d', $var);
case 'double':
case 'float':
return sprintf('%f', $var);
case '문자열': // 문자열은 ASCII 또는 UTF-8 형식이어야 합니다.
$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)) {
$as cii .= '\'.$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-00000080 - U-00 0007FF, 마스크 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('u s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
} elseif(($ord_var_c & 0xF0) == 0xE0) {
// 문자 U-00000800 - U-0000FFFF, 마스크 111 0XXXX, 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('u s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
} elseif(($ord_var_c & 0xF8) == 0xF0) {
// 문자 U-00010000 - U-001FFFFF, 마스크 111 10XXX, 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('u s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
} elseif(($ord_var_c & 0xFC) == 0xF8) {
// 문자 U-00200000 - U-03FFFFFF, 마스크 11111 0XX, 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('u s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
} elseif(($ord_var_c & 0xFE) == 0xFC) {
// 문자 U-04000000 - U-7FFFFFFFF, 마스크 1111110X, 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}), 단어($var{$c 4}), 단어($var{$c 5})); $c =5;
$ascii .= sprintf('u s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8')));
}
}
return sprintf('"%s"', $ascii); <{ %s}', join(',', array_map(array($this, 'name_value'), array_keys($var), array_values($var))));
return sprintf('[%s]', join(',', array_map(array($this, 'encode'), $var)));
사례 '객체':
$vars = get_object_vars($var);
return sprintf('{%s}', join(',', array_map(array($this, 'name_value'), array_keys($vars), array_values($vars))));
기본값:
반환 '';
}
}
함수 이름 값($name, $value)
{
return(sprintf("%s:%s", $this->encode(strval($name) )), $this->encode($value)));
}
function 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;
}
함수 디코드($str)
{
$str = $this->reduce_string($str);
switch(strtolower($str)) {
case 'true':
return true;
대문자 'false':
false를 반환;
case 'null':
반환 null; > ? (정수)$str
: (float)$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($chrs, $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))) { // 단일 이스케이프된 유니코드 문자
$ 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, $c, 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 = 배열(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, '어디' => 0, '삭제' => false)
$chrs = substr($str, 1, -1);
$chrs = $this->reduce_string($chrs); > return $arr;
} else {
$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))) {
$슬라이스 = 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($slice)) ; if(preg_match('/ ^s*(["'].*[^\]["'])s*:s*(S.*),?$/Uis', $slice, $parts)) { // "이름": 값 쌍
$key = $this->decode($parts[1]);
$val = $this->decode($parts[2]);
if($this->use == HTML_AJAX_JSON_LOOSE_TYPE) {
$obj[$ 키] = $val;
} 그렇지 않으면 {
$obj->$key = $val;
}
} elseif(preg_match('/^s*(w )s*:s*(S.*),?$/Uis', $slice, $parts)) { // 이름:값 쌍, 여기서 이름 따옴표가 없습니다
$key = $parts[1];
$val = $this->decode($parts[2]);
if($this->use == HTML_AJAX_JSON_LOOSE_TYPE) {
$obj[$ 키] = $val;
} 그렇지 않으면 {
$obj->$key = $val;
}
}
} } elseif((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ( $top['what'] != HTML_AJAX_JSON_IN_STR)) { // 인용문을 찾았지만 우리는 문자열
안에 있지 않습니다. '어디' => $c, 'delim' => $chrs{$c}));
//print("{$c}n에서 문자열의 시작을 찾았습니다."); RS{$ c} == $top['delim']) && ($top['what'] == HTML_AJAX_JSON_IN_STR) && (($chrs{$c - 1} != "\") || ($chrs{$c - 1} == "\" && $chrs{$c - 2} == "\"))) { // 인용문을 찾았지만 문자열에 있으며 이스케이프되지 않습니다.
array_pop($stk );
//print("{$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에서 배열의 시작을 찾았습니다."); 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' =>false))에 있습니다.
//print("{$c}n에서 개체의 시작을 찾았습니다."); array_pop($stk);
//print("{$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(reset($stk) == HTML_AJAX_JSON_IN_ARR) {
반환 $arr;
} elseif(reset($stk) == HTML_AJAX_JSON_IN_OBJ) {
return $obj;
}
}
}
}
}
if ( !function_exists("json_encode") || !function_exists("json_decode") ) {
include_once "json. PHP";
함수 json_encode($data) {
$json = 새 HTML_AJAX_JSON();
return $json->encode($data);
}
function json_decode($data) {
$json = new HTML_AJAX_JSON();
return $json->decode($data);
}
}
?>
以上就介绍了 56com视频采集接口程序PHP, 包括了方面的内容, 希望对PHP教程有兴趣的朋友有所帮助.