diff --git a/samples/Sample_26_Html.php b/samples/Sample_26_Html.php
index 99a35f9cbf..69d9d1310e 100644
--- a/samples/Sample_26_Html.php
+++ b/samples/Sample_26_Html.php
@@ -10,6 +10,8 @@
$html .= '
Some well formed HTML snippet needs to be used
';
$html .= 'With for example some1 inline formatting1
';
+$html .= 'A link to Read the docs
';
+
$html .= 'Unordered (bulleted) list:
';
$html .= '';
diff --git a/src/PhpWord/Shared/Html.php b/src/PhpWord/Shared/Html.php
index fd0bd54568..0f5f446aee 100644
--- a/src/PhpWord/Shared/Html.php
+++ b/src/PhpWord/Shared/Html.php
@@ -142,6 +142,7 @@ protected static function parseNode($node, $element, $styles = array(), $data =
'li' => array('ListItem', $node, $element, $styles, $data, null, null),
'img' => array('Image', $node, $element, $styles, null, null, null),
'br' => array('LineBreak', null, $element, $styles, null, null, null),
+ 'a' => array('Link', $node, $element, $styles, null, null, null),
);
$newElement = null;
@@ -643,4 +644,26 @@ private static function parseLineBreak($element)
{
$element->addTextBreak();
}
+
+ /**
+ * Parse link node
+ *
+ * @param \DOMNode $node
+ * @param \PhpOffice\PhpWord\Element\AbstractContainer $element
+ * @param array $styles
+ */
+ private static function parseLink($node, $element, &$styles)
+ {
+ $target = null;
+ foreach ($node->attributes as $attribute) {
+ switch ($attribute->name) {
+ case 'href':
+ $target = $attribute->value;
+ break;
+ }
+ }
+ self::parseInlineStyle($node, $styles['font']);
+
+ return $element->addLink($target, $node->textContent, $styles['font'], $styles['paragraph']);
+ }
}
diff --git a/tests/PhpWord/Shared/HtmlTest.php b/tests/PhpWord/Shared/HtmlTest.php
index 9c4cfd55c0..6122924ff0 100644
--- a/tests/PhpWord/Shared/HtmlTest.php
+++ b/tests/PhpWord/Shared/HtmlTest.php
@@ -341,4 +341,17 @@ public function testParseImage()
$this->assertStringMatchesFormat('%Smso-position-horizontal:right%S', $doc->getElementAttribute($baseXpath . '[1]/w:pict/v:shape', 'style'));
$this->assertStringMatchesFormat('%Smso-position-horizontal:left%S', $doc->getElementAttribute($baseXpath . '[2]/w:pict/v:shape', 'style'));
}
+
+ public function testParseLink()
+ {
+ $phpWord = new \PhpOffice\PhpWord\PhpWord();
+ $section = $phpWord->addSection();
+ $html = 'link text
';
+ Html::addHtml($section, $html);
+
+ $doc = TestHelperDOCX::getDocument($phpWord, 'Word2007');
+
+ $this->assertTrue($doc->elementExists('/w:document/w:body/w:p/w:hyperlink'));
+ $this->assertEquals('link text', $doc->getElement('/w:document/w:body/w:p/w:hyperlink/w:r/w:t')->nodeValue);
+ }
}