Php搜索特定链接并在其后附加URL

时间:2016-11-08 11:57:48

标签: php

我有一个跟随模式的字符串

$mystring="bla <a href="website.com"></a>";

只有更多的链接和其他HTML标签。

我想使用php函数:

  • 搜索包含特定单词的所有href标记。在这种情况下,单词将为website.com

  • 在每次出现时附加一个带有相同网址的文字链接。

示例:

<a href="website.com?bla"></a>

应该成为:

<a href="website.com?bla"></a><br><a href="website.com?bla">New link here</a>

其余的链接也是如此。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

首先,您应该使用strpos方法,使用lastPos作为偏移来迭代所有匹配项。然后在找到结束后插入字符串/ new链接

$needle = "website.com?"; // word to find
$endLink = "</a>"
$lastPos = 0;
$str_to_insert = "<br><a href=\"website.com?bla\">New link here</a>" // text to append

while (($lastPos = strpos($mystring, $needle, $lastPos))!== false) {
    //position just after finding the string is: occurrence + string length
    $lastPos = $lastPos + strlen($needle);
    //finding the end of link (to append it there)
    $writePos = strpos($mystring, $endLink, $lastPos);
    //appending the string and updating $mystring
    $mystring = substr_replace($mystring, $str_to_insert, $writePos, strlen($endLink);
    //add the appended string to lastPos, to avoid searching it
    $lastPos = $writePos + strlen($str_to_insert)

}

编辑

使$str_to_insert动态:

while (($lastPos = strpos($mystring, $needle, $lastPos))!== false) {
        $str_to_insert = substr($mystring, $lastPos, len($needle)
        //position just after finding the string is: occurrence + string length
        $lastPos = $lastPos + strlen($needle);
        // ... the rest keeps the same
}