xml_parser_create

(PHP 4, PHP 5, PHP 7)

xml_parser_createСоздание XML анализатора

Описание

resource xml_parser_create ([ string $encoding ] )

xml_parser_create() создает новый XML анализатор и возвращает ссылающийся на него ресурс, который можно использовать в других XML функциях.

Список параметров

encoding

Необязательный аргумент encoding задает кодировку символов для ввода/вывода в PHP 4. Начиная с PHP 5, кодировка входных данных определяется автоматически, а encoding задает кодировку только для выводимых данных. В PHP 4 кодировка по умолчанию для выходных данных та же, что и входных. Если передается пустая строка, анализатор попытается определить кодировку, просматривая первые 3 или 4 байта. В PHP 5.0.0 и 5.0.1 кодировка по умолчанию ISO-8859-1. Для версий PHP 5.0.2 и выше - UTF-8. Список поддерживаемых кодировок: ISO-8859-1, UTF-8 и US-ASCII.

Возвращаемые значения

Возвращает ресурс созданного XML анализатора.

Смотрите также

  • xml_parser_create_ns() - Создание XML анализатора с поддержкой пространств имен
  • xml_parser_free() - Освобождение XML анализатора

Коментарии

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.
2004-04-03 13:39:43
http://php5.kiev.ua/manual/ru/function.xml-parser-create.html
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)
2005-02-21 04:47:25
http://php5.kiev.ua/manual/ru/function.xml-parser-create.html
Автор:
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.
2005-05-25 09:01:32
http://php5.kiev.ua/manual/ru/function.xml-parser-create.html
I created a function, which combines xml_paresr_create and all functions around.

<?php
function html_parse($file)
     {
     
$array str_split($file1);
     
$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 tags

definition of the handling functions is:

<?php
function between($stuff) {}
?>

No other attributes
2010-09-24 14:46:17
http://php5.kiev.ua/manual/ru/function.xml-parser-create.html
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
2019-02-17 18:23:42
http://php5.kiev.ua/manual/ru/function.xml-parser-create.html

    Поддержать сайт на родительском проекте КГБ