红穆笔记
首頁 語言筆記 php獲取百度下拉詞
語言筆記 PHP

php獲取百度下拉詞

php获取百度下拉词

有些時候在做SEO的時候想要使用程序來自動修改標題,這時候可以用到百度下拉詞庫來自動匹配修改,以下是一段獲取百度詞庫的PHP代碼

//獲取百度下拉信息
$title = urlencode($data['title']);
$api = "https://www.baidu.com/sugrec?pre=1&p=1&ie=utf-8&prod=pc&csor=2&wd=".$title."";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$r = curl_exec($ch);
curl_close($ch);
$r = json_decode($r,true);

if(empty($r['g'])){
$new_title = $data['title'].'(圖文)';
}

//數據一定存在,取出數據,然後隨機獲取一個
$baidu_title = $r['g'][mt_rand(0,count($r['g'])-1)]['q'];//數據的隨機獲取
$baidu_title2 = $r['g'][mt_rand(0,count($r['g'])-1)]['q'];//數據的隨機獲取
$baidu_title = $baidu_title==$data['title']?$r['g'][mt_rand(0,count($r['g'])-1)]['q']:$baidu_title;//數據隨機,防止與原標題一樣
$baidu_title2 = $baidu_title==$baidu_title2?$r['g'][mt_rand(0,count($r['g'])-1)]['q']:$baidu_title2;//數據隨機,防止與第一個百度標題一樣

優化後的代碼:

<?php
// 獲取百度下拉信息
$title = urlencode($data['title']);
$api = "https://www.baidu.com/sugrec?pre=1&p=1&ie=utf-8&prod=pc&csor=2&wd=".$title."";

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $api,
    CURLOPT_TIMEOUT => 5,
    CURLOPT_RETURNTRANSFER => true,
]);

$r = curl_exec($ch);
curl_close($ch);

$r = json_decode($r, true);

// 檢查是否爲空,如果爲空,則添加後綴到標題中
if (empty($r['g'])) {
    $new_title = $data['title'] . ' (圖文)';
}

// 從建議中獲取隨機標題
$titles = array_column($r['g'], 'q');
$random_title = $titles[array_rand($titles)];

// 避免與原始標題和先前的建議重複
if ($random_title == $data['title'] || $random_title == $baidu_title) {
    $random_title = $titles[array_rand($titles)];
}

$baidu_title = $random_title;
$baidu_title2 = $titles[array_rand($titles)];

if ($baidu_title2 == $baidu_title) {
    $baidu_title2 = $titles[array_rand($titles)];
}

代碼的改進包括:

  • 使用數組來存儲隨機標題選項,以避免重複
  • 使用 array_column 提取響應中的標題
  • 使用 array_rand 從選項數組中獲取隨機標題
  • 簡化了避免與原始標題和先前建議重複的代碼
  • 使用數組參數設置 curl 選項,以提高可讀性和可維護性

根據上面上面的代碼封裝成函數,傳入中文標題後,如果成功獲取下拉則返回下拉數組,獲取爲空則返回false

function getBaiduSuggestion($title) {
    $title = urlencode($title);
    $api = "https://www.baidu.com/sugrec?pre=1&p=1&ie=utf-8&prod=pc&csor=2&wd=".$title."";

    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $api,
        CURLOPT_TIMEOUT => 5,
        CURLOPT_RETURNTRANSFER => true,
    ]);

    $r = curl_exec($ch);
    curl_close($ch);

    $r = json_decode($r, true);

    if (!empty($r['g'])) {
        $titles = array_column($r['g'], 'q');
        $baidu_title = $titles[array_rand($titles)];

        if ($baidu_title == $title) {
            $baidu_title = $titles[array_rand($titles)];
        }

        $baidu_title2 = $titles[array_rand($titles)];

        if ($baidu_title2 == $baidu_title) {
            $baidu_title2 = $titles[array_rand($titles)];
        }

        return [$baidu_title, $baidu_title2];
    } else {
        return false;
    }
}

根據自己的需求將代碼改了改:

function getBaiduSuggestion($title) {
    $title = urlencode($title);
    $api = "https://www.baidu.com/sugrec?pre=1&p=1&ie=utf-8&prod=pc&csor=2&wd=".$title."";

    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $api,
        CURLOPT_TIMEOUT => 5,
        CURLOPT_RETURNTRANSFER => true,
    ]);

    $r = curl_exec($ch);
    curl_close($ch);

    $r = json_decode($r, true);

    if (!empty($r['g'])) {
        return array_column($r['g'], 'q');
    } else {
        return false;
    }
}
微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

PHP ob函数记录

PHP ob函數記錄 語言筆記 PHP

下面3個函數的用法 ob_get_contents(); ob_end_clean(); ob_start(); 可以藉助這幾個函數實現緩衝本地文件,以及執行本地腳本代碼。 使用ob_start()把輸出的代碼存到緩衝區,頁面不會顯示出來; 然後用ob_get_contents得到緩衝區的數據。 o…
👁 141
PHP preg

PHP preg 語言筆記 PHP

preg_match_all 函數用於執行一個全局正則表達式匹配。preg_match_all() 語法int preg_match_all ( string $pattern , string $subject [, array &amp;$matches [, int $flags = PREG…
👁 169
PHP 三元运算符与if的详解

PHP 三元運算符與if的詳解 語言筆記 PHP

三元運算符語條件 ? 結果1 : 結果2 說明:問號前面的位置是判斷的條件,如果滿足條件時結果1,不滿足時結果2。本文對三元運算符和if...else...進行對比詳解,希望對大家有所幫助。今天在改論文在線的時候遇到了一個語句看不懂:$if_summary = $row['IF_SUMMARY']=…
👁 189
PHP强制转换类型

PHP強制轉換類型 語言筆記 PHP PHP採集 PHP與mysql

獲取數據類型1.如果想查看某個表達式的值和類型,用var_dump()。 2.如果只是想得到一個易讀懂的類型的表達方式用於調試,用 gettype()。3.要查看某個類型,不要用 gettype(),而用is_type() 函數。字符串轉換爲數值當一個字符串被當作數字來求值時,根據以下規則來決定結果…
👁 232
php 字符串中是否包含指定字符串的多种方法

php 字符串中是否包含指定字符串的多種方法 語言筆記 PHP

strstrstrstr() 函數搜索一個字符串在另一個字符串中的第一次出現。該函數返回字符串的其餘部分(從匹配點)。如果未找到所搜索的字符串,則返回 false。代碼如下:&lt;?php $email = 'user@example.com'; $domain = strstr($email, …
👁 138

推薦閱讀

响应式作文工作范文网站模板 0781

響應式作文工作範文網站模板 0781 實用收藏 易優模板

一款針對作文與工作範文的eyoucms響應式網站模板。設計風格簡潔實用,能夠提供各類範文、工作模板、寫作素材及資料下載。有助於教育資料平臺在線上吸引學生與職場人士。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(E…
👁 56
社会民生新闻博客网站模板 0782

社會民生新聞博客網站模板 0782 實用收藏 易優模板

此套eyoucms模板適用於社會民生與新聞博客網站,設計風格信息流,能夠聚合社會熱點、民生動態、深度報道及評論文章。有助於新聞媒體在線上吸引讀者,建立社會影響力。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(Ey…
👁 60
新闻博客资讯网站模板 0783

新聞博客資訊網站模板 0783 實用收藏 易優模板

一款針對新聞、博客與資訊網站的eyoucms模板。設計風格現代信息流,適合聚合行業新聞、深度報道、評論文章及熱點話題。有助於資訊網站在線上吸引讀者,建立媒體影響力。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(E…
👁 54
资源网站typecho001模板

資源網站typecho001模板 程序筆記 Typecho

typecho001模板板本請勿修改本模板文件夾名稱 文件夾名稱爲:typecho001 1.4修復文章頁面js輸出問題1.3修復未安裝插件時的報錯提示優化列表頁代碼輸出1.2修復評論功能增加自定義首頁標題1.1修復評論回覆不對稱功能添加首頁單獨的標題設置功能增加網站favicon.ico圖標增加一…
👁 198
生活常识新闻博客资讯网站模板 0784

生活常識新聞博客資訊網站模板 0784 實用收藏 易優模板

此套eyoucms模板適用於生活常識與新聞博客資訊網站,設計風格清新信息流,適合分享生活百科、健康知識、實用技巧及熱點資訊。有助於生活資訊平臺在線上吸引讀者。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(Eyou…
👁 31
typecho分页样式的修改

typecho分頁樣式的修改 程序筆記 Typecho

大人,時代變了!目前typecho最完美的解決方案了,因爲百度只能看到固定思維的代碼。實際生成的html代碼,乾淨到讓人窒息完全的自定義,包括給li元素加上class,給a元素加上class,給上一頁下一頁加上class,去除typecho自帶用於表示更多的li標籤。甚至裏面的內容我也能添加一些文字…
👁 517