PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди dom_varimport: DOMDocument рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рддреНрд╡рд░рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг

рдХреБрдЫ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореБрдЦреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ XSLT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред XSLT рдХреА рдкреНрд░рд╕рд┐рджреНрдз рдХрдорд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рд╡рд╛рдЪрд╛рд▓рддрд╛, рд╕рд╛рдкреЗрдХреНрд╖ рдзреАрдорд╛рдкрди, рдЖрджрд┐), рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рднреА рд╣реИрдВ: "рдорд╛рдирдХ" рднрд╛рд╖рд╛, "рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕" рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЗрд╕рдХреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдФрд░ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рд╕реЗ рд╕рд╣рд╛рдпрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред (exslt рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд╢реЙрд░реНрдЯрдПрдХреНрд╕рдПрд╕рдПрд▓рдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░рдЦреА, рдЬреЛ рднрд╛рд░реА рдХреЗ рдмрдЬрд╛рдп рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ <xsl: value of-select = "/ root / abc" /> рдФрд░ <xsl: choose> ... </ xsl: select> рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ {/ root / рдЪреБрдиреЗрдВ abc} рдФрд░ {if ...} ... {ifif} ... {/ if} рдмрд┐рдирд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ, рддреЛ рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред



рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдПрдХреНрд╕рдПрд╕рдПрд▓рдЯреА рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд╡рд┐рд░реЛрдзрд┐рдпреЛрдВ рдФрд░ рд╕рдорд░реНрдердХреЛрдВ рдХреЛ рдкреНрд░рдЪреБрд░ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛)ред рдореИрдВ рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ XSLT рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдЕрдЪреНрдЫреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред



XML рдкрд╛рдардХреАрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рдкреАрдврд╝реА рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП XSLT рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░реЗрдВ


рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ рдЬреЛ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреБрдЫ рдиреЗрд╕реНрдЯреЗрдб PHP рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИред рдЙрд╕реЗ рдЗрд╕ рд╕рд░рдгреА рдХреЛ XML рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рддрдм XSLT рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ PHP рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╕реЗ рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рдпрд╣ рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдореВрд░реНрдд рдХреА рдХреБрдЫ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рдд рдереА рдЬреЛ рдХрд┐ рдПрдХреНрд╕рдПрд╕рдПрд▓рдЯреАрдЯреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕реАрдзреЗ рдкреАрдПрдЪрдкреА рдбреЗрдЯрд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреА рдереА, рдЬреЛ рдкрд╛рда рдХреЗ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рд╕рдХрддреА рдереАред рдЗрд╕рд▓рд┐рдП рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рдХрд░ рджреЗрдВрдЧреЗ, рдФрд░ рдкрддреНрд░ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдбреЗрдЯрд╛ рдХреЗ XML рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ XSLT рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ C PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди dom_varimport ( GitHub рдкрд░ рдкреЛрд╕реНрдЯ ) рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдЗрд╕рдореЗрдВ рдЙрд╕реА рдирд╛рдо рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ DOMDocument рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдХрд┐рд╕реА рднреА рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ PHP рд╕рд░рдгреА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИред рдлрд╝рдВрдХреНрд╢рди DOMDocument рдХреЛ рдЗрдирдкреБрдЯ рд╕рд░рдгреА рдХреЗ XML рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрджреА рдХрд░рддрд╛ рд╣реИ - рд╢реБрджреНрдз PHP рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 20 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рддреЗрдЬреА рд╕реЗ рднрд░рддрд╛ рд╣реИред рд▓рдЧрднрдЧ 1-2 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд╕рдВрд▓рдЧреНрди рдЧреБрдгреЛрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде 1 рдПрдордмреА рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирддрд╛ рд╣реИред



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЙрд▓:



 $ doc = рдирдпрд╛ DOMDocument ();
 dom_varimport (
     $ рдбреЙрдХ
     рд╕рд░рдгреА (
         "some_key" => 111,
         123
         0.5
         "рдПрд░рд┐рдпрд░" => рдПрд░реЗ ("1 рдП" => "1 рдП"),
         "obj" => (рдСрдмреНрдЬреЗрдХреНрдЯ) рд╕рд░рдгреА ("рдкреНрд░реЛрдк" => "рд╡реИрд▓"),
         рд╕рдЪ рд╣реИ,
         рдЭреВрдареА,
         "b" => рдЕрд╢рдХреНрдд,
         "рдЦрд╛рд▓реА" => рд╕рд░рдгреА (),
     )
     "рд░реВрдЯ" // рд╡реИрдХрд▓реНрдкрд┐рдХ, "рд░реВрдЯ" рдХреЗ рд▓рд┐рдП рдЪреВрдХ
 );
 $ doc-> formatOutput = true;
 рдЗрдХреЛ $ doc-> saveXML ();  // рдпрд╣ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реИ: рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЖрдкрдХреЛ saveXML () рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА


рдЗрд╕ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ:



 <? xml рд╕рдВрд╕реНрдХрд░рдг = "1.0"?>
 <рд░реВрдЯ>
     <some_key key = "some_key"> 111 </ some_key> <! - plain key = value ->
     <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "0"> 123 </ рдЖрдЗрдЯрдо> <! - рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреБрдВрдЬреА "рдЖрдЗрдЯрдо" рдЯреИрдЧ рд╣реИрдВ ->
     <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "1"> 0.5 </ рдЖрдЗрдЯрдо> <! - рджреЛрд╣рд░рд╛ ->
     <arr key = "arrest"> <! - nested array ->
         <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "1a"> 1a </ рдЖрдЗрдЯрдо> <! - рдЕрдорд╛рдиреНрдп рдЯреИрдЧ рдирд╛рдо "рдЖрдЗрдЯрдо" -> рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
     </ рдЖрдЧрдорди>
     <obj key = "obj"> <! - рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ ->
         <рдкреНрд░реЛрдк рдХреБрдВрдЬреА = "рдкреНрд░реЛрдк"> рд╡реИрд▓ </ рдкреНрд░реЛрдк>
     </ Obj>
     <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "2"> 1 </ рдЖрдЗрдЯрдо> <! - рд╕рддреНрдп 1 рд╕реЗ> рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИ
     <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "3" /> <! - рдЧрд▓рдд рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реИ ->
     <b key = "b" /> <! - null рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ -> рдореЗрдВ рднреА рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
     <рдЦрд╛рд▓реА рдХреБрдВрдЬреА = "рдЦрд╛рд▓реА" /> <! - рдЦрд╛рд▓реА рд╕рд░рдгреА рдПрдХ рдЦрд╛рд▓реА рддрддреНрд╡ рд╣реИ ->
 </ рд░реВрдЯ>


рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ: рд╕рд░рдгреА рдХреБрдВрдЬреА рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдг XML рддрддреНрд╡ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рдВрднрд╡рддрдГ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде (рд▓реЗрдХрд┐рди рдпрджрд┐ рдирд╛рдо XML рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рдЖрдЗрдЯрдо" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХреНрд╕рдПрдордПрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдбреАрдмрдЧ рдХрд░рддреЗ рд╕рдордп рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред рддреЛ, рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ DOMDocument рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА XSLTProcessor рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХреНрд╕рдПрдордПрд▓ рдЯреЗрдХреНрд╕реНрдЯреБрдЕрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╣реАрдВ рднреА рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХрд╣реАрдВ рднреА рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдорд╢реАрди рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕ рдкрд░ рдЬреАрд╕реАрд╕реА рдФрд░ php5-src (рдпрд╛ php5-devel) рдЬреИрд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ:



 git clone https://github.com/DmitryKoterov/dom_varimport.git
 рд╕реАрдбреА рдбреЛрдо_рд╡рд░рд┐рдордкреЛрд░реНрдЯ
 phpize
 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░
 рдореЗрдХрдЕрдк
 рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
 рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ # рдпрд╛ рдХреЙрдкреА рдореЙрдбреНрдпреВрд▓ / dom_varimport.so рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
 phpize --clean


"рдореЗрдХ рдЗрдирд╕реНрдЯреЙрд▓" рд╕реНрдЯреЗрдк рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдмрд╕ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдореЙрдбреНрдпреВрд▓ / dom_varimport.so рдХреЛ рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, / usr / lib / php5) рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рдорд╢реАрдиреЗрдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ /etc/php5/conf.d/dom_varimport.ini рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ php5-fpm рдпрд╛ Apache рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛:



 рдПрдХреНрд╕рдЯреЗрдВрд╢рди = /usr/lib/php5/dom_varimport.so



All Articles