@@ -142,6 +142,7 @@ protected static function parseNode($node, $element, $styles = array(), $data =
142142 'li ' => array ('ListItem ' , $ node , $ element , $ styles , $ data , null , null ),
143143 'img ' => array ('Image ' , $ node , $ element , $ styles , null , null , null ),
144144 'br ' => array ('LineBreak ' , null , $ element , $ styles , null , null , null ),
145+ 'a ' => array ('Link ' , $ node , $ element , $ styles , null , null , null ),
145146 );
146147
147148 $ newElement = null ;
@@ -643,4 +644,26 @@ private static function parseLineBreak($element)
643644 {
644645 $ element ->addTextBreak ();
645646 }
647+
648+ /**
649+ * Parse link node
650+ *
651+ * @param \DOMNode $node
652+ * @param \PhpOffice\PhpWord\Element\AbstractContainer $element
653+ * @param array $styles
654+ */
655+ private static function parseLink ($ node , $ element , &$ styles )
656+ {
657+ $ target = null ;
658+ foreach ($ node ->attributes as $ attribute ) {
659+ switch ($ attribute ->name ) {
660+ case 'href ' :
661+ $ target = $ attribute ->value ;
662+ break ;
663+ }
664+ }
665+ self ::parseInlineStyle ($ node , $ styles ['font ' ]);
666+
667+ return $ element ->addLink ($ target , $ node ->textContent , $ styles ['font ' ], $ styles ['paragraph ' ]);
668+ }
646669}
0 commit comments