php8通過url獲取飛書文檔公開內容
額,私有文件只能通過飛書開發平臺的接口獲取,公開的文檔可以通過網頁代碼獲取,主要飛書文檔 會302重定向好幾次
require_once 'vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;
function requestWithGuzzle($url)
{
$client = new Client([
'allow_redirects' => [
'max' => 10,
'track_redirects' => true
]
]);
$jar = new CookieJar();
try {
$response = $client->get($url, [
'cookies' => $jar
]);
return [
'status_code' => $response->getStatusCode(),
'body' => $response->getBody()->getContents(),
'cookies' => $jar->toArray()
];
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
return false;
}
}
// 使用示例
$result = requestWithGuzzle('https://qjaus99bpl.feishu.cn/docx/XXXXXXXXXXXXXXXXX');
//var_dump($result); 文檔內容json字符就再下面 通過正則 匹配出來
$pattern3 = '/clientVars:\s*Object\((?<content>.*?)\)\s*\}\);\s*window\.docxSSREditable/';
$matches = [];
if (preg_match($pattern3, $result['body'], $matches)) {
echo "使用命名組匹配: " . $matches['content'] . "\n";
}
//json 轉為數組
$array = json_decode($matches['content'], true);
$block_map = $array['data']['block_map'];
$txt = '';
foreach ($array['data']['block_sequence'] as $value) {
$block = $block_map[$value]['data'];
if (!empty($block['text']['initialAttributedTexts']['text'])) {
$txt .= join(' ', array_values($block['text']['initialAttributedTexts']['text']));
}
}
var_dump($txt);
file_put_contents('./public/test.txt', $txt);

浙公網安備 33010602011771號