Php 在字符串中提取源url和锚文本

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>&

我试图从一系列字符串中提取数据,但运气不好。 在下面的示例代码中,我尝试使用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><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;