လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> get_meta_tags ကိုအသုံးပြုသောအခါမကြာခဏမေးသောမေးခွန်းများနှင့်ဖြေရှင်းနည်းများ

get_meta_tags ကိုအသုံးပြုသောအခါမကြာခဏမေးသောမေးခွန်းများနှင့်ဖြေရှင်းနည်းများ

gitbox 2025-09-16

Get_Meta_tags () သည် PHP တွင် <meta name = "" ""> Tags မှ <Meta name = "... "> tags များမှအကြောင်းအရာများကိုထုတ်ယူရန်အဆင်ပြေသော function တစ်ခုဖြစ်သည်။ ၎င်းကိုမကြာခဏစာမျက်နှာသော့ချက်စာလုံးများသို့မဟုတ်ဖော်ပြချက်များကိုတွားသွားလေ့ရှိသည်။ သို့သော်အမှန်တကယ်အသုံးပြုမှုတွင် developer များကပြ problems နာအမျိုးမျိုးကိုကြုံတွေ့ရလိမ့်မည်။ သော့ချက်စာလုံးသည်မအောင်မြင်ပါ။ ဝေးလံသောတောင်းဆိုမှုသည်မမှန်ကန်ပါ။


1 ။ Get_Meta_tags () ကိုအကန့်အသတ် () ကန့်သတ်ချက်များ (အရင်နားလည်သဘောပေါက်ခြင်း)

  • get_meta_tags (string $ filename, bool $ use_incleude_intude_tath = false) false : file ကိုဖတ်ပြီး <meta name = "xxx"> အကြောင်းအရာတစ်ခုချင်းစီကို activity Array Name (Mety) ။

  • It does not get the <title> tag content (i.e. the page title), nor parse metas with non- name attributes such as <meta property="og:..."> or <meta charset="..."> .

  • HTML အတွက်၎င်း၏လိုအပ်ချက်များကိုအတော်လေးတင်းကျပ်သည်။ Meta သည် အမည်ပုံစံ = "... " နှင့် အကြောင်းအရာ = "... " နှင့်အကြောင်းအရာများ = "... " အစဉ်အလာအရခွဲခြမ်းစိတ်ဖြာခြင်းသည်တစ်ခါတစ်ရံတွင်ခွဲခြမ်းစိတ်ဖြာခြင်းကိုအကျိုးသက်ရောက်နိုင်သည်။

နိဂုံး : အကယ်. သင်စာမျက်နှာ <title> သို့မဟုတ် Meta (Open Graph ကဲ့သို့) ပစ္စည်းဥစ်စာပိုင်ဆိုင်မှုကို အသုံးပြုလိုပါက Get_meta_tags () သည် တစ်ခုတည်းသောအသုံးမ 0 င်ပါ။


2 ။ မကြာခဏမေးလေ့ရှိသောမေးခွန်းများနှင့်ဖြေရှင်းနည်းများစာရင်း

မေးခွန်းမေးခွန်း A: <title> ကိုမရနိုင်ပါ (စာမျက်နှာခေါင်းစဉ်)

အကြောင်းရင်း - Get_Meta_tags () <title> ကိုမဖြေရှင်းနိုင်ပါ။
ဖြေရှင်းချက် - DomDocument သို့မဟုတ်ပုံမှန် (အကြံပြုထားခြင်းမရှိပါ) ကိုအသုံးပြုပါ <title> ကို ခွဲထုတ်ရန်။ ဥပမာ (အကြံပြုထားသည့် ဒိုမုံး ):

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">fetch_title</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$html</span></span></span><span>) {
    </span><span><span class="hljs-variable">$dom</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DOMDocument</span></span><span>();
    </span><span><span class="hljs-comment">// suppress warnings for malformed HTML</span></span><span>
    @</span><span><span class="hljs-variable">$dom</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">loadHTML</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>, LIBXML_NOWARNING | LIBXML_NOERROR);
    </span><span><span class="hljs-variable">$nodes</span></span><span> = </span><span><span class="hljs-variable">$dom</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getElementsByTagName</span></span><span>(</span><span><span class="hljs-string">'title'</span></span><span>);
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$nodes</span></span><span>-&gt;length ? </span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$nodes</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">item</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>)-&gt;textContent) : </span><span><span class="hljs-literal">null</span></span><span>;
}
</span></span>

အကယ်. သင်စာမျက်နှာအကြောင်းအရာကိုအဝေးမှရယူရန်လိုအပ်ပါက ကျေးဇူးပြု. html ကို file_get_contents / curl နှင့်ပထမဆုံးဆွဲထုတ်ပါ, ပြီးနောက်၎င်းကို fetter_title () သို့ကူးပါ။


မေးခွန်း B: Get_Meta_tags () အချည်းနှီးသောခင်းကျင်းမှုကိုပြန်ပို့သည်

ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက်များ :

  1. HTML Meta ကို အမည် = "... " အကြောင်းအရာ = "... " (ဥပမာ - ပိုင်ဆိုင်မှု = "og: og: og: og: og: og: og: og: og: http-exiv ) ။

  2. Meta သည် <head> (သို့မဟုတ်စာမျက်နှာဖွဲ့စည်းပုံသည်စံသတ်မှတ်ခြင်းမရှိပါ)

  3. ဇာတ်ကောင် encoding သို့မဟုတ် BOM ကခွဲခြမ်းစိတ်ဖြာခြင်းဖြစ်ပေါ်စေသည်။

  4. Allow_URL_FOPEN ကို ပိတ်ထားပြီး URL ကိုအသုံးမပြုနိုင်ပါ။

ဖြေရှင်းချက် -

  • Meta Attribute အမျိုးအစားကိုစစ်ဆေးပြီး Meta-> GetATTRATEARE ('NAME') နှင့် META-> GetATTRATEARE ('NAME) နှင့် Meta-> GetATTRATEARY (' Property) နှင့် Meta-> GetATTRATIRATHARY ('ပိုင်ဆိုင်မှု') ကို စစ်ဆေးပါ။

  • ဝေးလံခေါင်သီသော URLs များအတွက်စာမျက်နှာအကြောင်းအရာကိုပထမ ဦး ဆုံး (ပိုမိုပြောင်းလွယ်ပြင်လွယ်) ရရန် curl ကို သုံးပါ။ ထို့နောက်ခွဲခြမ်းစိတ်ဖြာရန် dom ကိုသုံးပါ။

  • ခွင့်ပြု ပါ

ဥပမာ - ( အမည် နှင့် ပစ္စည်းဥစ်စာပိုင်ဆိုင်မှုများ အပါအ 0 င်) နှင့်ခေါင်းစဉ်အပါအ 0 င်ဘုံ meta များကိုထုတ်ယူရန် Curl + dom ကိုသုံးပါ။

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">fetch_html</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$url</span></span></span><span>, </span><span><span class="hljs-variable">$timeout</span></span><span> = </span><span><span class="hljs-number">10</span></span><span>) {
    </span><span><span class="hljs-variable">$ch</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>(</span><span><span class="hljs-variable">$url</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">curl_setopt_array</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, [
        CURLOPT_RETURNTRANSFER =&gt; </span><span><span class="hljs-literal">true</span></span><span>,
        CURLOPT_FOLLOWLOCATION =&gt; </span><span><span class="hljs-literal">true</span></span><span>,
        CURLOPT_MAXREDIRS =&gt; </span><span><span class="hljs-number">5</span></span><span>,
        CURLOPT_CONNECTTIMEOUT =&gt; </span><span><span class="hljs-variable">$timeout</span></span><span>,
        CURLOPT_TIMEOUT =&gt; </span><span><span class="hljs-variable">$timeout</span></span><span>,
        CURLOPT_USERAGENT =&gt; </span><span><span class="hljs-string">'Mozilla/5.0 (compatible; PHP script)'</span></span><span>,
    ]);
    </span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_exec</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>);
    </span><span><span class="hljs-variable">$err</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_error</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$html</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">RuntimeException</span></span><span>(</span><span><span class="hljs-string">"Failed to fetch URL: <span class="hljs-subst">$err</span></span></span><span>");
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$html</span></span><span>;
}

</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">parse_meta_and_title</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$html</span></span></span><span>) {
    </span><span><span class="hljs-variable">$dom</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DOMDocument</span></span><span>();
    @</span><span><span class="hljs-variable">$dom</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">loadHTML</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>, LIBXML_NOWARNING | LIBXML_NOERROR);
    </span><span><span class="hljs-variable">$result</span></span><span> = [</span><span><span class="hljs-string">'title'</span></span><span> =&gt; </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-string">'meta'</span></span><span> =&gt; []];

    </span><span><span class="hljs-comment">// title</span></span><span>
    </span><span><span class="hljs-variable">$titles</span></span><span> = </span><span><span class="hljs-variable">$dom</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getElementsByTagName</span></span><span>(</span><span><span class="hljs-string">'title'</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$titles</span></span><span>-&gt;length) {
        </span><span><span class="hljs-variable">$result</span></span><span>[</span><span><span class="hljs-string">'title'</span></span><span>] = </span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$titles</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">item</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>)-&gt;textContent);
    }

    </span><span><span class="hljs-comment">// metas</span></span><span>
    </span><span><span class="hljs-variable">$metas</span></span><span> = </span><span><span class="hljs-variable">$dom</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getElementsByTagName</span></span><span>(</span><span><span class="hljs-string">'meta'</span></span><span>);
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$metas</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$meta</span></span><span>) {
        </span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-variable">$meta</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getAttribute</span></span><span>(</span><span><span class="hljs-string">'name'</span></span><span>);
        </span><span><span class="hljs-variable">$prop</span></span><span> = </span><span><span class="hljs-variable">$meta</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getAttribute</span></span><span>(</span><span><span class="hljs-string">'property'</span></span><span>); </span><span><span class="hljs-comment">// og: စောင့်</span></span><span>
        </span><span><span class="hljs-variable">$http_equiv</span></span><span> = </span><span><span class="hljs-variable">$meta</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getAttribute</span></span><span>(</span><span><span class="hljs-string">'http-equiv'</span></span><span>);
        </span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-variable">$meta</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getAttribute</span></span><span>(</span><span><span class="hljs-string">'content'</span></span><span>);

        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$name</span></span><span>) {
            </span><span><span class="hljs-variable">$result</span></span><span>[</span><span><span class="hljs-string">'meta'</span></span><span>][</span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$name</span></span><span>)] = </span><span><span class="hljs-variable">$content</span></span><span>;
        } </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$prop</span></span><span>) {
            </span><span><span class="hljs-variable">$result</span></span><span>[</span><span><span class="hljs-string">'meta'</span></span><span>][</span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$prop</span></span><span>)] = </span><span><span class="hljs-variable">$content</span></span><span>;
        } </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$http_equiv</span></span><span>) {
            </span><span><span class="hljs-variable">$result</span></span><span>[</span><span><span class="hljs-string">'meta'</span></span><span>][</span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$http_equiv</span></span><span>)] = </span><span><span class="hljs-variable">$content</span></span><span>;
        }
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;
}
</span></span>

မေးခွန်း C: ဇာတ်ကောင် encoding (တရုတ်နှင့်အခြားအတွက် bytes မျိုးစုံ) carbled code

အကြောင်းပြချက် :

  • စာမျက်နှာမှအသုံးပြုသော encoding (UTF-8, GBK) ကဲ့သို့သော Disdocument :: Loadhtml ၏ပုံမှန်အပြုအမူနှင့်မကိုက်ညီပါ။

  • HTTP Header သည်စာမျက်နှာရှိ Charset အချက်အလက်များနှင့်ကိုက်ညီမှုမရှိပါ။

ဖြေရှင်းချက် -

  • HTML သို့ HTML သို့ loadhtml () inclemp-8 ()) သို့ ပြောင်းရန် <meta http-equiv = "အကြောင်းအရာအမျိုးအစား" အကြောင်းအရာ = "text / html; charset = utf-8">> ခေါင်းထဲသို့သွားရန်။

  • encoding ကိုဆုံးဖြတ်ရန်နှင့်၎င်းကို UTF-8 သို့ပြောင်းရန် MB_DETEEct_encoding () ကို သုံးပါ။

ဥပမာ -

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">normalize_to_utf8</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$html</span></span></span><span>) {
    </span><span><span class="hljs-comment">// သွားဖို့ကြိုးစားပါ BOM သို့မဟုတ် meta တရားသူကြီး encoding,သင်မသေချာလျှင်၎င်းကိုသုံးပါ mb_detect_encoding</span></span><span>
    </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">'/&lt;meta.+?charset=["\']?\s*([a-zA-Z0-9\-\_]+)\b/i'</span></span><span>, </span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-variable">$m</span></span><span>)) {
        </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtoupper</span></span><span>(</span><span><span class="hljs-variable">$m</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>]);
    }
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$encoding</span></span><span>) {
        </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_detect_encoding</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>, [</span><span><span class="hljs-string">'UTF-8'</span></span><span>,</span><span><span class="hljs-string">'GB2312'</span></span><span>,</span><span><span class="hljs-string">'GBK'</span></span><span>,</span><span><span class="hljs-string">'ISO-8859-1'</span></span><span>], </span><span><span class="hljs-literal">true</span></span><span>);
    }
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$encoding</span></span><span> &amp;&amp; </span><span><span class="hljs-title function_ invoke__">strtoupper</span></span><span>(</span><span><span class="hljs-variable">$encoding</span></span><span>) !== </span><span><span class="hljs-string">'UTF-8'</span></span><span>) {
        </span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-variable">$encoding</span></span><span>);
    }
    </span><span><span class="hljs-comment">// အာမခံ loadHTML အဖြစ်သတ်မှတ် UTF-8</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stripos</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-string">'&lt;meta http-equiv="Content-Type"'</span></span><span>) === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/&lt;head([^&gt;]*)&gt;/i'</span></span><span>, </span><span><span class="hljs-string">'&lt;head$1&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;'</span></span><span>, </span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$html</span></span><span>;
}
</span></span>

မေးခွန်း D: Get_Meta_tags () HTML မှတ်ချက်များသို့မဟုတ်မမှန်ပုံစံများကိုအထိခိုက်မခံပါ

အကြောင်းရင်း - ဒီ function ဟာရိုးရှင်းတဲ့ parser အပေါ်အခြေခံထားတယ်, ပစ္စည်းဥစ်စာပိုင်ဆိုင်မှု အတွက်ပစ္စည်းဥစ်စာ ပိုင်ဆိုင်မှုမှာအသစ်တွေ, မှတ်ချက်များ, ဒါမှမဟုတ်အသိုက်ကိုထူးဆန်းတဲ့ဇာတ်ကောင်တွေကြုံရလိမ့်မယ်။
ဖြေရှင်းချက် - ၎င်းသည် DomDocument နှင့်အတူအမှားများကိုသည်းခံ။ , သို့မဟုတ် ဦး ခေါင်းကို HTML တွင်ပထမဆုံး preprocess ပထမ (မှတ်ချက်များကိုဖယ်ရှားပါ, attribute များကိုအတူတူပါပဲ) ကို ဖယ်ရှားပါ။


မေးခွန်းအီး: Crawling ဝေးလံခေါင်ဖျားစာမျက်နှာများကိုဆန့်ကျင်။ ပြောင်းပြန်ဖြစ်ခြင်းသို့မဟုတ် 403/429 သို့ပြန်သွားခြင်း

တန်ပြန်အစီအမံ :

  • curlopt_USERAGNESS ကို အသုံးပြု. CURLOPT_USERAGNENT ကို သုံးပါ။

  • ကျိုးကြောင်းဆီလျော်သော curlopt_timeout နှင့် curlopt_connectimeout ချမှတ်ပါ။

  • curlopt_followloclocation (အချို့သောပတ်ဝန်းကျင်တွင်ဖွင့်ထားရန်လိုအပ်ကြောင်းသတိပြုပါ) ။

  • အကယ်. ဆိုဒ်တွင်ပရိယာယ်နှင့်မဟာဗျူဟာ (အတည်ပြုကုဒ်, js ပြန်ဆိုခြင်း,

    • ရိုးရှင်းသောတောင်းဆိုမှုခေါင်းစဉ်သည်အသွင်သဏ်ဌာန်အသွင်ပြောင်းခြင်း (သို့သော်ဥပဒေနှင့် 0 က်ဘ်ဆိုက်စက်ရုပ်များသဘောတူညီချက်ကိုလိုက်နာသည်) ။

    • JS (ဥပမာ deptless browser များ) နှင့်အတူတွားသောတွားသမားများကိုသုံးပါ။

  • HTTP status ကုဒ်များကိုထုတ်လုပ်ပါ။

ဥပမာ - ခေါင်းစဉ်များနှင့်ဆံပင်ကောက်ကောက်

 <span><span><span class="hljs-title function_ invoke__">curl_setopt_array</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, [
    CURLOPT_RETURNTRANSFER =&gt; </span><span><span class="hljs-literal">true</span></span><span>,
    CURLOPT_FOLLOWLOCATION =&gt; </span><span><span class="hljs-literal">true</span></span><span>,
    CURLOPT_MAXREDIRS =&gt; </span><span><span class="hljs-number">5</span></span><span>,
    CURLOPT_CONNECTTIMEOUT =&gt; </span><span><span class="hljs-number">10</span></span><span>,
    CURLOPT_TIMEOUT =&gt; </span><span><span class="hljs-number">15</span></span><span>,
    CURLOPT_USERAGENT =&gt; </span><span><span class="hljs-string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'</span></span><span>,
    CURLOPT_HTTPHEADER =&gt; [
        </span><span><span class="hljs-string">'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'</span></span><span>,
        </span><span><span class="hljs-string">'Accept-Language: en-US,en;q=0.5'</span></span><span>,
    ],
]);
</span></span>

မေးခွန်း F: Get_Meta_tags () စာလုံးအသေးများကိုသာပြန်ပို့သည်

၎င်းသည် function ၏ဒီဇိုင်းဖြစ်သည်။ သော့ချက်အမည်ကိုစာလုံးအသေးအဖြစ်ပြောင်းလဲလိမ့်မည်။ အကယ်. သင်၏စီးပွားရေးလုပ်ငန်းသည်အမှုန်အထိခိုက်မခံသောအကွက်များအပေါ်မှီခိုနေပါကစံသတ်မှတ်ထားသောသော့အမည်များကိုသတိပြုပါ။


3 ။ အကြံပြုထားသည့်ကြံ့ခိုင်သောအကောင်အထည်ဖော်မှု (ခေါင်းစဉ်, သော့ချက်စာလုံးများ, ဖော်ပြချက်, og tags)

ဤတွင်ပေါင်းစပ်လုပ်ဆောင်ချက်တစ်ခုဖြစ်ပါသည်။ HTML ကိုရရန် Curl ကို ပထမဆုံးအသုံးပြုပါ, ထို့နောက် encoding ပုံမှန်ပြုလုပ်ပါ။

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">fetch_page_info</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$url</span></span></span><span>) {
    </span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fetch_html</span></span><span>(</span><span><span class="hljs-variable">$url</span></span><span>);
    </span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-title function_ invoke__">normalize_to_utf8</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>);
    </span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">parse_meta_and_title</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>);

    </span><span><span class="hljs-comment">// သာမန်လယ်ကွင်းပုံမှန်:title, keywords, description</span></span><span>
    </span><span><span class="hljs-variable">$info</span></span><span> = [];
    </span><span><span class="hljs-variable">$info</span></span><span>[</span><span><span class="hljs-string">'title'</span></span><span>] = </span><span><span class="hljs-variable">$data</span></span><span>[</span><span><span class="hljs-string">'title'</span></span><span>] ?? </span><span><span class="hljs-literal">null</span></span><span>;
    </span><span><span class="hljs-variable">$meta</span></span><span> = </span><span><span class="hljs-variable">$data</span></span><span>[</span><span><span class="hljs-string">'meta'</span></span><span>] ?? [];

    </span><span><span class="hljs-variable">$info</span></span><span>[</span><span><span class="hljs-string">'keywords'</span></span><span>] = </span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'keywords'</span></span><span>] ?? (</span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'og:site_name'</span></span><span>] ?? </span><span><span class="hljs-literal">null</span></span><span>);
    </span><span><span class="hljs-variable">$info</span></span><span>[</span><span><span class="hljs-string">'description'</span></span><span>] = </span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'description'</span></span><span>] ?? (</span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'og:description'</span></span><span>] ?? </span><span><span class="hljs-literal">null</span></span><span>);

    </span><span><span class="hljs-comment">// အားလုံးပြန်သွားပါ meta နောက်ထပ်အသုံးပြုမှုသည်</span></span><span>
    </span><span><span class="hljs-variable">$info</span></span><span>[</span><span><span class="hljs-string">'meta_all'</span></span><span>] = </span><span><span class="hljs-variable">$meta</span></span><span>;

    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$info</span></span><span>;
}

</span><span><span class="hljs-comment">// ဥပမာကိုသုံးပါ:</span></span><span>
</span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-variable">$url</span></span><span> = </span><span><span class="hljs-string">'https://example.com'</span></span><span>;
    </span><span><span class="hljs-variable">$info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fetch_page_info</span></span><span>(</span><span><span class="hljs-variable">$url</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">var_export</span></span><span>(</span><span><span class="hljs-variable">$info</span></span><span>);
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Error: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span></span>

4 ။ စွမ်းဆောင်ရည်နှင့် cache ကိုအကြံပြုချက်များ

  • အကယ်. သင်သည်အသုတ်တွင်စာမျက်နှာအမြောက်အမြားကိုတွားသွားရန်လိုအပ်ပါက ကျေးဇူးပြု. တူညီသော URL ကိုအချိန်နှင့်တပြေးညီမကိုးပါနှင့်။ Page Updates ၏ကြိမ်နှုန်းပေါ် မူတည်. 1 နာရီသို့မဟုတ် 24 နာရီကဲ့သို့သောသင့်တော်သောသက်တမ်းကုန်ဆုံးသည့်ပေါ်လစီများကိုအသုံးပြုရန်အကြံပြုသည်။

  • ပစ်မှတ်ထားသည့်နေရာမှပိတ်ဆို့ခြင်းသို့မဟုတ်၎င်း၏အိမ်ရှင်ထံမှမြင့်မားသောဖိအားများအောက်တွင်ရှိနေခြင်းကိုရှောင်ရှားရန်တစ်ပြိုင်နက်တည်းတွားတတ်သောတွား 0 န်ကိုထိန်းချုပ်ပါ။

  • ကြီးမားသောဆိုဒ်များအတွက်ပင်မ 0 င်ရောက်ခြင်းပင်မစာမျက်နှာနှင့်အရေးကြီးသောစာမျက်နှာများကို ဦး စားပေးသည့်စာမျက်နှာများအားလုံးသည်လင့်ခ်များအားလုံးတွားသွားနိုင်သည်။


5 ။ ဖြည့်စွက်အကြံပေးချက်များနှင့်ကြိုတင်ကာကွယ်မှုများ

  • Meta tags များအနေဖြင့်ယူနီဖောင်းမဟုတ်သည့် Moder Modern Sites သည် Get_Meta_tags () အတွင်းမဟုတ်သော og: ခေါင်းစဉ် နှင့် Twitter: ခေါင်းစဉ်ကို အသုံးပြုသည်။ DOM ကိုအသုံးပြုခြင်းသည်အမျိုးအစားအားလုံးကိုရိုက်ကူးနိုင်သည်။

  • Meta tag ပွားများ - စာမျက်နှာပေါ်တွင် Meta အမည်များကို (မျိုးစုံဘာသာစကားထိန်းချုပ်မှုအတွက်အသုံးပြုနိုင်သည်) ရှိပါကသင်၏ခွဲခြမ်းစိတ်ဖြာမှုဆိုင်ရာယုတ္တိဗေဒသည်ပထမတစ်ခုကိုယူရန်,

  • META ရှိ HTML အဖွဲ့အစည်းများ - Decoding Endits ကဲ့သို့သော & amp ကဲ့သို့သော decoding entit များကိုဂရုပြုပါ။ & # 123; ( html_entity_decode () ) ။

  • စက်ရုပ်များ / Meta-Refresh : Meta Refresh (Redirection) သို့မဟုတ် Redirection Noindex ကိုကိုင်တွယ်ရန်လိုအပ်ပါက http-equiv နှင့် checks နှင့်သက်ဆိုင်ရာဂုဏ်သတ္တိများကိုစစ်ဆေးပါ။

  • robots.txt နှင့်ဥပဒေနှင့်လိုက်လျောညီထွေပါ ။ ကျေးဇူးပြု. ပစ်မှတ်ထားသည့် site robots.txt နှင့် 0 န်ဆောင်မှုဆိုင်ရာသတ်မှတ်ချက်များကိုမတွန့်ဘဲ crowling,


6 ။ လက်တွေ့စစ်ဆေးရမည့်စာရင်း (အမြန်စစ်ဆေးမှုအဆင့်များ)

  1. သင် <meta name = "သော့ချက်စာလုံးများ"> သို့မဟုတ် <title> (နှစ်ခုကွဲပြားခြားနားသော tools များ)

  2. အကယ်. ၎င်းသည်ဝေးလံခေါင်သီတင့်သည်ဆိုပါကမူလ HTML ကိုရယူရန်နှင့်ပုံနှိပ်ခြင်းနှင့် Meta ၏အရေးအသားနှင့် encoding ကိုစစ်ဆေးရန် Curl ကို ပထမဆုံးအသုံးပြုပါ။

  3. utf-8 မဟုတ်လျှင် Charset ကို စစ်ဆေးပါ။ ထို့နောက်ပထမ ဦး ဆုံးပြောင်းပါ။

  4. get_meta_tags () ကို ထုတ်ယူလို့မရဘူးဆိုရင် DomDocument ကိုပြောင်းပြီး ဖမ်းယူ လို့ မရဘူး

  5. HTTP အမှားများ, redirection နှင့် crawling anti-crawling ယန္တရားများကိုကိုင်တွယ်ပါ

  6. ထပ်တူတောင်းဆိုမှုများကိုရှောင်ရှားရန်အရေးကြီးသောစာမျက်နှာများ cache ကိုအကောင်အထည်ဖော်ပါ။


7 ။ အကျဉ်းချုပ်

  • Get_Meta_tags () သည်ရိုးရှင်းလွယ်ကူပြီးလွယ်ကူစွာအသုံးပြုရလွယ်ကူသော်လည်း၎င်းသည်စံနှင့်ရိုးရှင်းသော Meta အမည် = "... " အခြေအနေများနှင့်သာသက်ဆိုင်သည်။ ၎င်းသည်အမျိုးအစား <title> or property ၏ Meta ကို တွားကြပါ။

  • ရှုပ်ထွေးသော, စံသတ်မှတ်ထားသောသို့မဟုတ် Non-Utf-8 စာမျက်နှာများအတွက် curl + domdocument ပေါင်းစပ်မှုပေါင်းစပ်ရန်အသုံးပြုရန်အကြံပြုသည်။ ပို. ပြောင်းလွယ်ပြင်လွယ်။

  • Coding, ဝေးလံခေါင်သီတောင်းဆိုမှုပျက်ကွက်ခြင်း, ပြောင်းပြန်တွားခြင်းနှင့် Meta-ross သည်ဘုံအမှားများဖြစ်သည်။ ပြ problems နာအများစုသည်အထက်တွင်ပြ troubl နာဖြေရှင်းရာတွင်တည်ရှိပြီးဖြေရှင်းနိုင်သည်။

  • JS rendering လုပ်ရန်လိုအပ်သည့်စာမျက်နှာများကိုလုပ်ဆောင်ရန်လိုအပ်ပါက Headless Browser (သို့) server-side rendering solution (Php ဇာင်ဇာ) မှ) သုံးရန်လိုအပ်သည်။