PHPquery удаляет заглавные буквы для имен тегов разметки, когда это не должно

Я делаю некоторую работу с API-интерфейсом Amazon и столкнулся с проблемой при создании новых документов в запросе PHP. Я использую версию 0.9.5

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

Дает показания:

    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)

Как видите, заглавная буква тега потеряна. Это поведение по умолчанию для PHP query и, если да, есть ли способ сохранить заглавные буквы тегов?

\ phpQuery:: newDocument делает это еще без <root> теги там.

(обратите внимание, что цель этого вопроса заключается только в том, чтобы теги теряли там заглавные буквы при использовании \ phpQuery:: newDocument, а не в эффективности использования PHP query в этом контексте)

Благодарю.

Помощь с этим вопросом будет высоко ценится:) .

РЕДАКТИРОВАТЬ: ответил (Спасибо за помощь!) \phpQuery::newDocument() нечувствителен к регистру и \phpQuery::newDocumentXML() вместо этого следует использовать для ведения дела

1 ответ

Решение

Изменить:

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() следует использовать вместо этого для ведения регистра имен тегов.

Другие вопросы по тегам