ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: SimpleXML ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΊ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ var_dump() ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ 1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° children()
<?php
$xml = simplexml_load_string(
'<sites>
<site name="spravkaweb.ru">
<site name="links.spravkaweb.ru" />
<site name="forum.spravkaweb.ru" />
<site name="server.spravkaweb.ru" />
</site>
<site name="yandex.ru">
<site name="money.yandex.ru" />
<site name="map.yandex.ru" />
<site name="market.yandex.ru" />
</site>
</sites>');
echo '<ul>';
foreach ($xml->children() as $site) {
echo '<dt>' . $site['name'];
foreach ($site->children() as $subsite) {
echo '<dd>' . $subsite['name'];
}
}
echo '</ul>';
?>
ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ²Π΅Π΄Π΅Ρ:
spravkaweb.ru links.spravkaweb.ru forum.spravkaweb.ru server.spravkaweb.ruyandex.ru money.yandex.ru map.yandex.ru market.yandex.ru
xpath
SimpleXMLElement-xpath
SimpleXMLElement-xpath -- ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Xpath-Π·Π°ΠΏΡΠΎΡ ΠΊ XML-Π΄Π°Π½Π½ΡΠΌ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
array SimpleXMLElement->xpath ( string path )
ΠΠ΅ΡΠΎΠ΄ xpath ΠΈΡΠ΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° SimpleXML, ΠΏΡΡΡ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΊΠ°Π·Π°Π½ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ path. ΠΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² SimpleXMLElement.
ΠΡΠΈΠΌΠ΅Ρ 1. Xpath
<?php
$string = <<<XML
<a>
<b>
<c>text</c>
<c>stuff</c>
</b>
<d>
<c>code</c>
<b>
<c>plain</c>
</b>
</d>
</a>
XML;
$xml = simplexml_load_string($string);
/* ΠΠΎΠΈΡΠΊ ΠΏΠΎ <a><b><c> */
$result = $xml->xpath('/a/b/c');
foreach ($result as $node) {
echo '/a/b/c: ' . $node . '<BR>';
}
/* ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄ΠΎΡΠΎΠΆΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ... */
$result = $xml->xpath('b/c');
foreach ($result as $node) {
echo 'b/c: ' . $node . '<BR>';
}
?>
ΠΠ°Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ Π²ΡΠ²Π΅Π΄Π΅Ρ:
/a/b/c: text/a/b/c: stuffb/c: textb/c: stuff
ΠΠ²Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ.
simplexml_import_dom
simplexml_import_dom
(PHP 5)
simplexml_import_dom -- ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ SimpleXMLElement, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΈΠ· DOM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
SimpleXMLElement simplexml_import_dom ( DOMNode node [, string class_name] )
ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ DOM ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½Π° Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ SimpleXML. ΠΡΠΎΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ SimpleXML. ΠΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΌΠ΅ΡΠΎΠ΄ Π²Π΅ΡΠ½Π΅Ρ false.
ΠΡΠΈΠΌΠ΅Ρ 1. Import DOM
<?php
$dom = new domDocument;
$dom->loadXML('<sites><site><url>spravkaweb.ru</url></site></sites>');
if (!$dom) {
echo 'ΠΡΠΈΠ±ΠΊΠ° ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°!';
exit;
}
$s = simplexml_import_dom($dom);
echo $s->site[0]->url; // spravkaweb.ru
?>
simplexml_load_file
simplexml_load_file
(PHP 5)
simplexml_load_file -- ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ XML-ΡΠ°ΠΉΠ» Π² ΠΎΠ±ΡΠ΅ΠΊΡ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
object simplexml_load_file ( string filename [, string class_name [, int options]] )
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΡΠ°ΠΉΠ» filename Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ XML-Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡ SimpleXMLElement. ΠΡΠ»ΠΈ Π² XML-Π΄Π°Π½Π½ΡΡ ΠΈΠΌΠ΅ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ FALSE.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ class_name Π² ΡΡΠ½ΠΊΡΠΈΠΈ simplexml_load_file() Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½ΡΠ»Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΈ ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ° SimpleXMLElement.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 5.1.0 ΠΈ Libxml 2.6.0 Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ options, ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π° Π² additional Libxml parameters.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Libxml 2 ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π΅Ρ URL ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌΡ Π²ΠΈΠ΄Ρ. Π’.Π΅. Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ b&c Π² URL-ΡΡΡΠΎΠΊΠ΅, Π²Π°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ: simplexml_load_file(rawurlencode('http://example.com/?a=' . urlencode('b&c'))). ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 5.1.0 ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΡΠΈΠΌΠ΅Ρ 1. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ XML Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°
<?php
// Π€Π°ΠΉΠ» test.xml ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ XML Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Ρ ΠΊΠΎΡΠ½Π΅Π²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ
// ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ title /[root]/title.
if (file_exists('test.xml')) {
$xml = simplexml_load_file('test.xml');
var_dump($xml);
} else {
exit('ΠΡΠΈΠ±ΠΊΠ° ΠΎΡΠΊΡΡΡΠΈΡ test.xml.');
}
?>
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
SimpleXMLElement Object( [title] => Π’Π΅ΡΡΠΎΠ²ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ...)
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ title ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: $xml-title.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅:
simplexml_load_string()
simplexml_load_string
simplexml_load_string
(PHP 5)
simplexml_load_string -- ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ Ρ XML Π² ΠΎΠ±ΡΠ΅ΠΊΡ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
object simplexml_load_string ( string data [, string class_name [, int options]] )
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅ΡΠ΅Ρ "ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ" XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π² ΡΡΡΠΎΠΊΠ΅ data ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° SimpleXMLElement, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΡΠ°Π²Π½ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ xml-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΡΠ»ΠΈ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ FALSE.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ class_name Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠ½ΠΊΡΠΈΡ simplexml_load_string() Π²Π΅ΡΠ½ΡΠ»Π° ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΡΡΠΈΡΡΡΡ ΠΊΠ»Π°ΡΡ SimpleXMLElement.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 5.1.0 ΠΈ Libxml 2.6.0, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ options, ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² additional Libxml parameters.
ΠΡΠΈΠΌΠ΅Ρ 1. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ XML-ΡΡΡΠΎΠΊΠΈ
<?php
$string = <<<XML
<?xml version='1.0'?>
<document>
<title>Forty What?</title>
<from>Joe</from>
<to>Jane</to>
<body>
I know that's the answer -- but what's the question?
</body>
</document>
XML;
$xml = simplexml_load_string($string);
var_dump($xml);
?>
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ²Π΅Π΄Π΅Ρ:
SimpleXMLElement Object( [title] => Forty What? [from] => Joe [to] => Jane [body] => I know that's the answer -- but what's the question?)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ $xml-body ΠΈ Ρ.Π΄.
Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ. ΠΠ΅ΡΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΎΡΠΈΠΈ
Π ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Unix Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΠ°Π·Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠΌΠ΅Π½ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ, Π° Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ - Π΅Π³ΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ°ΠΌΠΈ. Π ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Unix ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ.
Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ° - ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΠΉΠ». ΠΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΊΡΡΡΠΈΡ Π΅Π³ΠΎ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅) ΡΠΈΡΡΠ΅ΠΌΠ° "ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ", ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ, ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ Π΅Π³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π±ΡΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ, Π° Π½Π΅ ΠΊΠ°ΠΊ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ PHP.
ΠΠ΅ΡΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ - Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π½. ΠΠ»Π°Π²Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ»ΠΎΠΊ - ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ ΠΈ ΡΡΡΠ»Π°ΡΡΡΡ. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΠΎΡ ΡΠ°ΠΉΠ» - ΠΈ Π²ΡΡ "ΠΏΠ°ΡΡΠΈΠ½Π°" ΡΡΡΠ»ΠΎΠΊ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²Π°Ρ ΠΈΠΌΠ΅Π»Π°ΡΡ, ΡΠ°Π·Π²Π°Π»ΠΈΡΡΡΡ Π½Π° ΠΊΡΡΠΊΠΈ. ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ: ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΠ°, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ.ΠΊ. ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΡΠ·Ρ Ρ "Π½Π°ΡΡΠΎΡΡΠΈΠΌ" ΡΠ°ΠΉΠ»ΠΎΠΌ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΎ ΡΡΠ²ΡΡΠ²ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΡΡΡΠ»ΠΊΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π΄ΡΡΠ³ΡΡ, Π° ΡΠ° Π½Π° ΡΡΠ΅ΡΡΡ ΠΈ Ρ.Π΄. ΡΡΠΎΠ²Π½Π΅ΠΉ Π½Π° 10.
ΠΠ΅ΡΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ ΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π²Π½ΠΎΠΏΡΠ°Π²Π½ΡΡ ΠΈΠΌΠ΅Π½, ΠΏΡΠΈΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΏΠΎ Π½ΠΈΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π±ΡΡΡΡΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΈΠΌΠ΅Π½ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΎ, ΡΠΎ ΡΠ°ΠΌ ΡΠ°ΠΉΠ» ΡΠ΄Π°Π»ΠΈΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠΌΡ Π±ΡΠ»ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ, ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΠΌΠ΅Π½ Ρ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ.
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ Ρ ΡΠ°ΠΉΠ»Π° (ΡΠΎ Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΆΠ΅ΡΡΠΊΡΡ ΡΡΡΠ»ΠΊΡ) ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ link(). ΠΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ΄Π΅Π΅Π½ΡΠΈΡΠ΅Π½ ΡΡΠ½ΠΊΡΠΈΠΈ symlink(), Π΄Π° ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠ½Π° ΠΏΠΎ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΡΡ, Π° ΠΆΠ΅ΡΡΠΊΡΡ ΡΡΡΠ»ΠΊΡ.
readlink
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
string readlink(string $linkname)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ²ΡΠ·Π°Π½ Π΅Π³ΠΎ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ $linkname. ΠΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, ΡΡΠΎΠ±Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ°ΠΌ ΡΠ°ΠΉΠ», Π° Π½Π΅ ΡΡΡΠ»ΠΊΡ Π½Π° Π½Π΅Π³ΠΎ. Π ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "Π»ΠΎΠΆΡ".
symlink
Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠ»ΠΊΡ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
bool symlink(string $target, string $link)
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠ»ΠΊΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ $link Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ (ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³), Π·Π°Π΄Π°Π½Π½ΡΡ Π² $target. Π ΡΠ»ΡΡΠ°Π΅ "ΠΏΡΠΎΠ²Π°Π»Π°" ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ false.