2017-03-23 8 views
0

amazon apiでいくつかの作業をしていて、PHPクエリで新しい文書を作成する際に問題が発生しました。あなたがタグ総額が失われて見ることができるようにPHPqueryがマークアップタグ名の大文字を取り除いていないとき

string '<TotalOffers>2</TotalOffers><TotalOfferPages>1</TotalOfferPages> <MoreOffersUrl>https://www.amazon.co.uk/gp/offer-listing/B01KI13K0W%3FSubscriptionId%3DAKIAICCWYPWR3A76YQDQ%26tag%3D8496-5230-2708%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12734%26creativeASIN%3DB01KI13K0W</MoreOffersUrl><Offer> 
    <Merchant> 
    <Name>Amazon.co.uk</Name> 
    </Merchant> 
    <OfferAttributes> 
    <Condition>New</Condition> 
    </OfferAttributes> 
    <OfferListing> 
    <OfferListingId>ZUHqmK4tgaBMBcOsWWSBV%2B%2FwXbnd%2BSYg58EFdjcH93Ayh%2FnSp741DyflKxdwL7w7k4O7nJ9zTBkxRNymmCq%2BNtgwHMXrFlFZRtfv0VL%2BBm8%3D</OfferListingId> 
    <Price> 
     <Amount>21999</Amount> 
     <CurrencyCode>GBP</CurrencyCode> 
     <FormattedPrice>£219.99</FormattedPrice> 
    </Price> 
    <Availability>Usually dispatched within 24 hours</Availability> 
    <AvailabilityAttributes> 
     <AvailabilityType>now</AvailabilityType> 
     <MinimumHours>0</MinimumHours> 
     <MaximumHours>0</MaximumHours> 
    </AvailabilityAttributes> 
    <IsEligibleForSuperSaverShipp'... (length=2055) 

そして...

string '<root><totaloffers>2</totaloffers><totalofferpages>1</totalofferpages><moreoffersurl>https://www.amazon.co.uk/gp/offer-listing/B01KI13K0W%3FSubscriptionId%3DAKIAICCWYPWR3A76YQDQ%26tag%3D8496-5230-2708%26linkCode%3Dxm2%26camp%3D2025%26creative%3D12734%26creativeASIN%3DB01KI13K0W</moreoffersurl><offer><merchant><name>Amazon.co.uk</name></merchant><offerattributes><condition>New</condition></offerattributes><offerlisting><offerlistingid>ZUHqmK4tgaBMBcOsWWSBV%2B%2FwXbnd%2BSYg58EFdjcH93Ayh%2FnSp741DyflKxdwL7w7k4O7nJ9zTBkxRNymmCq%2BNtgwHMXrFlFZRtfv0VL%2BBm8%3D</offerlistingid><price><amount>21999</amount><currencycode>GBP</currencycode><formattedprice>£219.99</formattedprice></price><availability>Usually dispatched within 24 hours</availability><availabilityattributes><availabilitytype>now</availabilitytype><minimumhours>0</minimumhours><maximumhours>0</maximumhours></availabilityattributes><iseligibleforsupersavershipping>1</iseligibleforsupersavershipping><iseligibleforprime>1</iseligibleforprime></offerlisting>'... (length=1846) 

:私は、バージョン0.9.5

var_dump($innerHTML); 
$php_query=\phpQuery::newDocument("<root>".$innerHTML."</root>"); 
var_dump($php_query->html()); 

が、読み出しを与える使用しています。 PHPqueryのデフォルトの動作ですか、そうであればタグの大文字を維持する方法はありますか?

\ phpQuery :: newDocumentはまだ<root>タグが存在しないままこれを行います。

(この文脈でPHPqueryを使用しての有効性を\ phpQuery :: newDocumentを使用していないときに、この質問の目的は純粋にタグについてそこ総額を失うことに注意してください)

感謝。

この問題のヘルプは大変感謝しています:)

EDITは:(協力いただきありがとうございます!)答え\phpQuery::newDocument()は、大文字と小文字が区別され、\phpQuery::newDocumentXML()

+0

XMLのXMLリーダーを使用する必要があります.HTMLではタグ名については大文字と小文字が区別されず、PHPQueryはおそらくその動作を維持します。 – apokryfos

+0

ああ、私はそれを試してみましょう! – ryanolee

+1

うん、うまくいった!ありがとう! http://puu.sh/uW1g1/9a4ec8f165.png この質問をどうすればいいですか(それを残しておくと便利ですか?) – ryanolee

答えて

0

変更ケースを維持するために代わりに使用する必要がありますに

var_dump($innerHTML); 
$php_query=\phpQuery::newDocument("<root>".$innerHTML."</root>"); 
var_dump($php_query->html()); 

を:

var_dump($innerHTML); 
$php_query=\phpQuery::newDocumentXML("<root>".$innerHTML."</root>"); 
var_dump($php_query->html()); 

として、 HTMLはタグ名では大文字と小文字を区別しませんが、XMLではそうではありません。したがって、\phpQuery::newDocument()は大文字と小文字を区別せず、タグ名の大文字を維持しません。代わりに、\phpQuery::newDocumentXML()をタグ名の大文字小文字を維持するために使用する必要があります。

関連する問題