xml_parser_create

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_parser_createBir XML çözümleyici oluşturur

Açıklama

xml_parser_create(?string $kodlama = null): XMLParser

xml_parser_create() işlevi, yeni bir XML çözümleyici oluşturup diğer XML işlevleri tarafından kullanılmak üzere bir XMLParser örneği döndürür.

Bağımsız Değişkenler

kodlama

İsteğe bağlı kodlama bağımsız değişkeni ile PHP4'te girdi/çıktı için karakter kodlaması belirtilir. Girdi kodlaması otomatik olarak algılanmakta olduğundan bu bağımsız değişken ile sadece çıktı karakter kodlaması belirtilebilmektedir. Bağımsız değişkene boş bir dizge atanmışsa çözümleyici belgenin ilk 3 veya 4 baytına bakarak kodlamayı belirlemeye çalışır. Öntanımlı çıktı karakter kodlaması UTF-8'dir. Desteklenen karakter kodlamaları: ISO-8859-1, UTF-8 ve US-ASCII.

Dönen Değerler

Yeni bir XMLParser örneği ile döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 Bu işlev artık bir XMLParser örneği döndürüyor; evvelce, resource türünde bir değer dönerdi, başarısızlık durumunda false döner.
8.0.0 kodlama artık boş olabiliyor.

Ayrıca Bakınız

add a note

User Contributed Notes 5 notes

up
13
marek995 at seznam dot cz
14 years ago
I created a function, which combines xml_paresr_create and all functions around.<?phpfunction html_parse($file)     {      $array = str_split($file, 1);      $count = false;      $text = "";      $end = false;      foreach($array as $temp)       {        switch($temp)         {          case "<":           between($text);           $text = "";           $count = true;           $end = false;           break;          case ">":           if($end == true) {end_tag($text);}           else {start_tag($text);}           $text = "";           break;          case "/":           if($count == true) {$end = true;}           else {$text = $text . "/";}           break;          default:           $count = false;           $text = $text . $temp;         }       }     }?>The input value is a string.It calls functions start_tag() , between() and end_tag() just like the original xml parser.But it has a few differences:  - It does NOT check the code. Just resends values to that three functions, no matter, if they are right  - It works with parameters. For example: from tag <sth b="42"> sends sth b="42"  - It works wit diacritics. The original parser sometimes wrapped the text before the first diacritics appearance.  - Works with all encoding. If the input is UTF-8, the output will be UTF-8 too  - It works with strings. Not with file pointers.  - No "Reserved XML name" error  - No doctype needed  - It does not work with commentaries, notes, programming instructions etc. Just the tagsdefinition of the handling functions is:<?phpfunction between($stuff) {}?>No other attributes
up
2
jcalvert at gmx dot net
21 years ago
To maintain compatibility between PHP4 and PHP5 you should always pass a string argument to this function. PHP4 autodetects the format of the input if you leave it out whereas PHP5 will assume the format to be ISO-8859-1 (and choke on the byte order marker of UTF-8 files).Calling the function as <?php $res = xml_parser_create('') ?> will cause both versions of PHP to autodetect the format.
up
0
Tobbe
20 years ago
The above "XML to array" code does not work properly if you have several tags on the same level and with the same name, example:<currenterrors><error><description>This is a real error...</description></error><error><description>This is a second error...</description></error><error><description>Lots of errors today...</description></error><error><description>This is the last error...</description></error></currenterrors>It will then only display the first <error>-tag.In this case you will need to number the tags automatically or maybe have several arrays for each new element.
up
-1
php at stock-consulting dot com
20 years ago
Even though I passed "UTF-8" as encoding type PHP (Version 4.3.3) did *not* treat the input file as UTF-8. The input file was missing the BOM header bytes (which may indeed be omitted, according to RFC3629...but things are a bit unclear there. The RFC seems to make mere recommendations concering the BOM header). If you want to sure that PHP treats an UTF-8 encoded file correctly, make sure that it begins with the corresponding 3 byte BOM header (0xEF 0xBB 0xBF)
up
-1
bishop at php dot net
6 years ago
Internals has proposed[1] changing this extension from resource-based to object-based. When this change is made, xml_parser_create will return an object, not a resource. Application developers are encouraged to replace any checks for explicit success, like:<?php$res = xml_parser_create(/*...*/);if (! is_resource($res)) {    // ...}?>With a check for explicit failure:<?php$res = xml_parser_create(/*...*/);if (false === $res) {    // ...}[1]: https://marc.info/?l=php-internals&m=154998365013373&w=2
To Top