我有一个跟随模式的字符串
$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>
其余的链接也是如此。
我该怎么做?
答案 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
}