Как выводить информацию из XML в PHP

Swift 4:

Это зависит от правил кодирования, за которыми следует ваш сервер.

Apple предлагает этот метод класса, но не сообщает о том, какой вид протокола RCF следует .

var escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!

После этого полезного инструмента вы должны гарантировать кодирование этих символов для ваших параметров:

  • $ (знак доллара) становится % 24
  • & amp; (Амперсанд) становится% 26
  • + (Плюс) становится% 2B
  • , (Comma) становится% 2C
  • : (Colon) становится% 3A
  • ; (Полуколон) становится% 3B
  • = (Равно) становится% 3D
  • ? (Question Mark) становится% 3F
  • @ (Commercial A / At) становится% 40

Другими словами, говоря о кодировке URL, вы должны следовать за Протокол RFC 1738 .

И Swift не распространяется на кодировку символа +, но он хорошо работает с этими тремя @:? chars.

Итак, чтобы правильно кодировать каждый ваш параметр, параметра .urlHostAllowed недостаточно, вы также должны добавить специальные символы, например:

encodedParameter = parameter.replacingOccurrences(of: "+", with: "%2B")

Надеемся, что это помогает кому-то, кто сходит с ума, чтобы найти эту информацию.

-1
задан S. Artyom 16 January 2019 в 16:07
поделиться

1 ответ

Вам было бы лучше получить к нему доступ, используя что-то вроде SimpleXML и XPath. Есть по крайней мере два способа сделать это, оба здесь полагаются на использование XPath, но вы должны использовать пространства имен (бит ya:), чтобы гарантировать, что вы получите правильный элемент. Поскольку XPath возвращает список совпадений, я просто использую [0], чтобы получить первое, если есть несколько, вы можете использовать цикл ...

$test = file_get_contents("data.xml");
$xml = simplexml_load_string($test);

// Version 1
// Fetch the ya:created element
$created = $xml->xpath("//ya:created")[0];
// Extract the attributes and print the date
echo $created[0]->attributes("http://purl.org/dc/elements/1.1/")->date;

// Version 2
// Extract the dd:date attribute (using the @)
$createdDate = $xml->xpath("//ya:created/@dc:date")[0];
echo $createdDate;

Забыл сказать - если вы хотите использовать эти поля для базы данных и т. Д., Вам может потребоваться привести их к строке, чтобы убедиться, что они преобразованы ...

$date = (string)$createdDate;
0
ответ дан Nigel Ren 16 January 2019 в 16:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: