Php 在字符串中提取源url和锚文本
我试图从一系列字符串中提取数据,但运气不好。 在下面的示例代码中,我尝试使用preg_split,但它没有给出我想要的结果 使用以下代码:Php 在字符串中提取源url和锚文本,php,Php,我试图从一系列字符串中提取数据,但运气不好。 在下面的示例代码中,我尝试使用preg_split,但它没有给出我想要的结果 使用以下代码: <?php $str = '<a href="https://rads.stackoverflow.com/amzn/click/com/B008EYEYBA" rel="nofollow noreferrer">Nike Air Jordan SC-2 Mens Basketball Shoes 454050-035</a>&
<?php
$str = '<a href="https://rads.stackoverflow.com/amzn/click/com/B008EYEYBA" rel="nofollow noreferrer">Nike Air Jordan SC-2 Mens Basketball Shoes 454050-035</a><img src="http://www.assoc-amazon.com/e/ir?t=mytwitterpage-20&l=as2&o=1&a=B008EYEYBA" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
echo '<pre>';
print_r($chars);
echo '<pre>';
?>
请注意,在array1中,“当我只需要时,包括Nike”一词只是URL
实际上,我提取$str的最终目标只是在单独的数组中输出源URL和achor文本,如下所示:
网址:
锚文本:
Nike Air Jordan SC-2男式篮球鞋454050-035
非常感谢您能告诉我如何做到这一点。您可以在php函数的帮助下做到这一点 您想在此处删除锚定标记
您可以使用strip_tags()函数删除所有标记。使用正则表达式解析html是一种糟糕的做法。PHP对此有扩展。您根本无法构建一个通用正则表达式,该正则表达式将适用于您可能遇到的任何html。DOM方法更具扩展性
$string='';
$dom=新的DOMDocument();
libxml\u使用\u内部错误(true);
$dom->loadHTML($string);
libxml_clear_errors();
$elementA=$dom->getElementsByTagName('a')->item(0);
$aText=$elementA->nodeValue;
$aLink=$elementA->getAttribute('href');
echo$aLink.“\n”。$aText;
谢谢webduos,它可以工作,但只提供锚文本。源URL如何?任何内置函数都可以提供与strip_tags()处理锚文本相同的URL?我尝试了这个方法,但它给了我警告:DOMDocument::loadHTML()[DOMDocument.loadHTML]:htmlParseEntityRef:在实体中,第1行应为“;”,因为只提供了整个文档的一部分。您可以禁用警告或提供完整的文档。顺便说一句,我使用img标记尝试了它,但似乎无法获取img url。border=“0”src=“”>$elementImg=$dom->getElementsByTagName('img')->项(0)$imgLink=$elementImg->getAttribute('src');
应该可以工作。通过投票而不是评论来感谢他!
Array
(
[0] => Array
(
[0] => 0
)
[1] => Array
(
[0] => href="https://rads.stackoverflow.com/amzn/click/com/B008EYEYBA" rel="nofollow noreferrer">Nike
[1] => 3
)
[2] => Array
(
[0] => Air
[1] => 167
)
[3] => Array
(
[0] => Jordan
[1] => 171
)
[4] => Array
(
[0] => SC-2
[1] => 178
)
[5] => Array
(
[0] => Mens
[1] => 183
)
[6] => Array
(
[0] => Basketball
[1] => 188
)
[7] => Array
(
[0] => Shoes
[1] => 199
)
[8] => Array
(
[0] => 454050-035 205
)
[9] => Array
(
[0] => src="http://www.assoc-amazon.com/e/ir?t=mytwitterpage-20&l=as2&o=1&a=B008EYEYBA"
[1] => 224
)
[10] => Array
(
[0] => width="1"
[1] => 305
)
[11] => Array
(
[0] => height="1"
[1] => 315
)
[12] => Array
(
[0] => border="0"
[1] => 326
)
[13] => Array
(
[0] => alt=""
[1] => 337
)
[14] => Array
(
[0] => style="border:none
[1] => 344
)
[15] => Array
(
[0] => !important;
[1] => 363
)
[16] => Array
(
[0] => margin:0px
[1] => 375
)
[17] => Array
(
[0] => !important;"
[1] => 386
)
[18] => Array
(
[0] => />
[1] => 399
)
)
[1] => Array
(
[0] => href="https://rads.stackoverflow.com/amzn/click/com/B008EYEYBA" rel="nofollow noreferrer">Nike
[1] => 3
)
$string = '<a href="https://rads.stackoverflow.com/amzn/click/B008EYEYBA">Nike Air Jordan SC-2 Mens Basketball Shoes 454050-035</a><img src="http://www.assoc-amazon.com/e/ir?t=mytwitterpage-20&l=as2&o=1&a=B008EYEYBA" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />';
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($string);
libxml_clear_errors();
$elementA = $dom->getElementsByTagName('a')->item(0);
$aText = $elementA->nodeValue;
$aLink = $elementA->getAttribute('href');
echo $aLink . "\n" . $aText;