易趣商品描述破坏我的页面结构

Ebay item description destroy my page structure

我正在使用 ebay api 通过 callname=GetSingleItem 将项目提取到我的网站,一切正常。

请查看下面我用来获取项目详细信息的代码段

    $res = $api -> get ( "http://open.api.ebay.com/shopping?"
                        . "callname=GetSingleItem&"
                        . 
   "IncludeSelector=Description,ItemSpecifics,Details&"
                        . "ItemID=" . $listing -> platform_key . '&'
                        . "appid=$ebayAppId&"
                        . "version=".$version ) ;

                    $xml = simplexml_load_string ( $res -> getBody () ) ;
                    $json = json_encode ( $xml ) ;
                    $jsonResult = json_decode ( $json , TRUE ) ;

然后我通过下面的代码段获取它的详细信息

     $ebayItemArray[ "description" ] = ( $jsonResult[ "Item" ][ "Description" ] 
   )

请注意以上代码段只是示例代码

所以我在 Laravel blade.php

中通过以下代码段使用此描述
      <div class=container text-left">
                            {!!$ebayItemArray[ "description" ]!!}
                        </div>

所以这很有效对某些产品没有任何错误,但对于某些产品,当我尝试显示描述时它破坏了我的布局 样式如下

当我从 BLADE 文件中删除描述变量时,一切正常,因为它们应该是

根据文档:

If the Description value is used, the full description is returned, with all HTML, XML, or CSS markup used in the listing (if any) by the seller. To only view the actual text of the listing description (no markup tags), the TextDescription value shall be used instead.

所以可能是额外的 CSS 破坏了您的页面结构。

你有选择

  1. 将描述值转换为纯文本
// Not tested...
$description = $jsonResult[ "Item" ][ "Description" ];
$doc = new DOMDocument();
$doc->loadHTML($description); // Load as HTML
removeElementsByTagName('style', $doc); // Remove the <style> Tag
$description = strip_tags($doc->textContent); // To plain Text
$ebayItemArray[ "description" ] = $description;
  1. 使用IncludeSelector=TextDescription
$res = $api -> get ( "http://open.api.ebay.com/shopping?"
                        . "callname=GetSingleItem&"
                        . 
   "IncludeSelector=TextDescription,ItemSpecifics,Details&"
                        . "ItemID=" . $listing -> platform_key . '&'
                        . "appid=$ebayAppId&"
                        . "version=".$version ) ;
  1. 在插入说明的位置使用 iFrame
<iframe 
  title="Description" 
  srcdoc="{!!$ebayItemArray[ "description" ]!!}"
  width="300px" height="300px"
></iframe>

使用 iFrame,您还需要自动调整 iFrame 的高度。