我想創建一個應用程序,用戶可以從其他網站分享鏈接,並在縮略圖/圖片下方顯示一些小說明(如facebook,twitter,reddit ..),我如何才能識別用戶是否真的張貼了一個鏈接,並自動生成一個縮略圖和描述從該網站,如果它有一個我如何獲得縮略圖/圖片和外國網址的說明,如Facebook或Twitter?
我試圖用laravel來做到這一點!
我想創建一個應用程序,用戶可以從其他網站分享鏈接,並在縮略圖/圖片下方顯示一些小說明(如facebook,twitter,reddit ..),我如何才能識別用戶是否真的張貼了一個鏈接,並自動生成一個縮略圖和描述從該網站,如果它有一個我如何獲得縮略圖/圖片和外國網址的說明,如Facebook或Twitter?
我試圖用laravel來做到這一點!
您將對其他網站的URL發出http請求,並使用響應中的元素來構建預覽。 Facebook贊成爲此目的使用og:
元標記。您可以在客戶端或服務器上執行此操作。
如果您需要在瀏覽器中執行此操作,我想您可以在URL可能顯示的字段上使用事件處理程序,查看它的更改事件和模式匹配以獲取URL。當檢測到URL時,您會啓動發出http請求的例程,獲取遠程頁面並解析該頁面中用於構建預覽的特定元素。
例如,Google,臉書和推特等大型網站可以從某些網站提取structured data,當這些網站使用諸如schema.org之類的東西提供該網站時。 Schema.org has a github repository有很多這方面的例子和有用的工具。您還可以查看JSON-LD
這就是所謂的Microdata或RDFa。這使計算機可以在網絡上獲取可閱讀的文本,並能夠將它們解析爲結構化,有意義的信息。就像Google在搜索結果中使用的那種類似。
有some implementations in PHP左右浮動,你可以從packagist挖。
所以這裏是您可能在網站上找到的Microdata示例。
<div itemscope itemtype="http://schema.org/Order">
<div itemprop="seller" itemscope itemtype="http://schema.org/Organization">
<b itemprop="name">ACME Supplies</b>
</div>
<div itemprop="customer" itemscope itemtype="http://schema.org/Person">
<b itemprop="name">Jane Doe</b>
</div>
<div itemprop="orderedItem" itemscope itemtype="http://schema.org/OrderItem">
Item number: <span itemprop="orderItemNumber">abc123</span>
<span itemprop="orderQuantity">1</span>
<div itemprop="orderedItem" itemscope itemtype="http://schema.org/Product">
<span itemprop="name">Widget</span>
</div>
<link itemprop="orderItemStatus" href="http://schema.org/OrderDelivered" />Delivered
<div itemprop="orderDelivery" itemscope itemtype="http://schema.org/ParcelDelivery">
<time="expectedArrivalFrom">2015-03-10</time>
</div>
</div>
<div itemprop="orderedItem" itemscope itemtype="http://schema.org/OrderItem">
Item number: <span itemprop="orderItemNumber">def456</span>
<span itemprop="orderQuantity">4</span>
<div itemprop="orderedItem" itemscope itemtype="http://schema.org/Product">
<span itemprop="name">Widget accessories</span>
</div>
<link itemprop="orderItemStatus" href="http://schema.org/OrderInTransit" />Shipped
<div itemprop="orderDelivery" itemscope itemtype="http://schema.org/ParcelDelivery">
<time itemprop="expectedArrivalFrom">2015-03-15</time>
<time itemprop="expectedArrivalUntil">2015-03-18</time>
</div>
</div>
</div>
如果你打的網址file_get_contents('http://www.example.com/somepage')
和使用模式的PHP實現解壓這個你可以導出數據的結構,任何一種模式的。像圖片,文章的描述,問題,人物,地點,產品等...
沒有這些信息,你基本上只是在PHP中解析DOM,如DOMDocument,猜測它的含義。它可能根本沒有明智的結構,但你可以在HTML中查看諸如<title>
標籤的東西,例如獲取非常基本的信息。
這個問題與Laravel毫不相干...... – jcorry