<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Parse callbacks</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="yaml.callbacks.html">Callbacks</a></div> <div class="next" style="text-align: right; float: right;"><a href="yaml.callbacks.emit.html">Emit callbacks</a></div> <div class="up"><a href="yaml.callbacks.html">Callbacks</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="yaml.callbacks.parse" class="section"> <h2 class="title">Parse callbacks</h2> <p class="para"> Parse <span class="type"><span class="type callbacks">callbacks</span></span> are invoked by <span class="function"><a href="function.yaml-parse.html" class="function">yaml_parse()</a></span>, <span class="function"><a href="function.yaml-parse-file.html" class="function">yaml_parse_file()</a></span> or <span class="function"><a href="function.yaml-parse-url.html" class="function">yaml_parse_url()</a></span> functions when a registered YAML tag is encountered. The callback is passed the tagged entity's value, the tag, and flags indicating the scalar entity style. The callback must return the data that the YAML parser should emit for this entity. </p> <div class="example" id="example-4099"> <p><strong>Example #1 Parse callback example</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">/**<br /> * Parsing callback for yaml tag.<br /> * @param mixed $value Data from yaml file<br /> * @param string $tag Tag that triggered callback<br /> * @param int $flags Scalar entity style (see YAML_*_SCALAR_STYLE)<br /> * @return mixed Value that YAML parser should emit for the given value<br /> */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">tag_callback </span><span style="color: #007700">(</span><span style="color: #0000BB">$value</span><span style="color: #007700">, </span><span style="color: #0000BB">$tag</span><span style="color: #007700">, </span><span style="color: #0000BB">$flags</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">func_get_args</span><span style="color: #007700">()); </span><span style="color: #FF8000">// debugging<br /> </span><span style="color: #007700">return </span><span style="color: #DD0000">"Hello </span><span style="color: #007700">{</span><span style="color: #0000BB">$value</span><span style="color: #007700">}</span><span style="color: #DD0000">"</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$yaml </span><span style="color: #007700">= <<<YAML<br /></span><span style="color: #DD0000">greeting: !example/hello World<br /></span><span style="color: #007700">YAML;<br /><br /></span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">yaml_parse</span><span style="color: #007700">(</span><span style="color: #0000BB">$yaml</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">$ndocs</span><span style="color: #007700">, array(<br /> </span><span style="color: #DD0000">'!example/hello' </span><span style="color: #007700">=> </span><span style="color: #DD0000">'tag_callback'</span><span style="color: #007700">,<br /> ));<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$result</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> <div class="example-contents"><p>The above example will output something similar to:</p></div> <div class="example-contents screen"> <div class="cdata"><pre> array(3) { [0]=> string(5) "World" [1]=> string(14) "!example/hello" [2]=> int(1) } array(1) { ["greeting"]=> string(11) "Hello World" } </pre></div> </div> </div> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="yaml.callbacks.html">Callbacks</a></div> <div class="next" style="text-align: right; float: right;"><a href="yaml.callbacks.emit.html">Emit callbacks</a></div> <div class="up"><a href="yaml.callbacks.html">Callbacks</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>