Търсене на линк в стринг и appedn на URL след него

Hous

Registered
Здравейте, имам стринг с подобно съдържание:
Код:
$mystring="text text <htmltag>bla</htmltag> 
<a href="website.com">Link1</a>
text text
<a href="mtel.bg">link2</a>
<a href="website.com?blabla">link3</a>";

Искам да направя така, че с php да се вземе URL-а на линковете които съдържат website.com и след тях да се добави същия URL като втори линк.

Тоест горния пример, след php да стане:
Код:
<a href="website.com">link1</a>
<br>
<a href="website.com">Neshto</a>
и
Код:
<a href="website.com?blabla">link3</a>
<br>
<a href="website.com?blabla">Drugo neshto</a>

Идеята е като намери линка с дадения уебсите към него да добавя същия линк на нов ред.
 
Без html parser няма ли как да стане, стринга не е много къс но реално се търси само линкове с конкретен сайт, като няма много линкове може би 3-5 максимум. Някой може ли да даде примерен код?
 
Като гледам по примери и документация:

PHP:
$dom = new DOMDocument;
$dom->loadHTML($html);

$links = $dom->getElementsByTagName('a');

foreach ($links as $link) {
  $new_link = $link->cloneNode();
  $new_link->nodeValue = "neshto";
   $link->parentNode->insertBefore($new_link , $link);
}
Под всеки линк слага негово копие и сменя текста вътре, както попита.

edit - бях забравил new_int параметъра на insertBefore
 
Нали ти дадох код и ти казах, че няма проблеми ако трябва да намери 3-5-8 линка, то дефакто не го бърка колко ще намери, бърка го колко е голям стринга защото обхожда всичко. Колкото по голям, толкова по-бавно дори и с DOM парсъра е така :)

Ето един пример:
PHP:
$MY_STRING = 'text text <htmltag>bla</htmltag> 
<a href="website.com">Link1</a>
text text
<a href="mtel.bg">link2</a>
<a href="website.com?blabla">link3</a>';

preg_match_all('/(<a\s*href=(\'|\")*website.com([^\"]*?)(\'|\")\s*\>(.*?)\<\/a\>)/ui', $MY_STRING, $matches);


echo print_r($matches);
Като зависи тоя стринг ескейпнат ли е или не и т.н. Смисъл, ще трябва да го направиш в формата в който е на примера, защото ако е минат през htmlentities примерно, мисля, че няма да сработи този регулярен израз :) :?:
 
По кода който даваш ще намеря линковете, но идеята ми е като ги намери след тях да прасне един <br> таг и един <a href> със същия url?
В кода който даваш като имам мачнати тагове реално аз не искам да ги извадя всички след текста, а аедин ви да "редактирам" стринга преди да го покажа. За това исках демо скрипт, ще го пробвам по-късно това което си дал като пример и ще пиша. Благодаря за отговорите. :)

ps:@anonimen това което си дал е малко по-различно, целта ми е данамери линк с определен сайт в него и след него да добави същия сайт с определен текст.
Код:
<a href="tarseniqsait.com">neshto</a>
след скрипта да се показва
Код:
<a href="tarseniqsait.com">neshto</a><br>
<a href="tarseniqsait.com">text</a>
 
PHP:
$MY_STRING = 'text text <htmltag>bla</htmltag> 
<a href="website.com">Link1</a>
text text
<a href="mtel.bg">link2</a>
<a href="website.com?blabla">link3</a>';

$string = preg_replace('/(<a\s*href=(\'|\")*(website\.com([^\"]*?)+)(\'|\")\s*\>(.*?)\<\/a\>))/ui', '$1 <br/> <a href="$3?drugtekst">$6</a>',  $MY_STRING);


echo $string;

Като може да тества и гледаш групите за регулярния израз от тука: https://regex101.com/r/MdADlK/3 :idea: :?:
 

Back
Горе