Анализ вашего документа с помощью dom, поиск всех тегов "a" и последующая замена могут быть хорошим способом. Кто-то уже прокомментировал, разместив вам эту ссылку , чтобы показать вам, что регулярные выражения не всегда лучший способ работы с HTML.
Ayways этот код должен работать:
<?php
$dom = new DOMDocument;
//html string contains your html
$dom->loadHTML($html);
?><ul><?
foreach( $dom->getElementsByTagName('a') as $node ) {
//look for href attribute
if( $node->hasAttribute( 'href' ) ) {
$href = $node->getAttribute( 'href' );
// change hrefs value
$node->setAttribute( "href", preg_replace( "/\/app\/\?query=(.*)/", "/newapp/?q=\1", $href ) );
}
}
//save new html
$newHTML = $dom->saveHTML();
?>
Обратите внимание, что я сделал это с помощью preg_replace, но это можно сделать с помощью str_ireplace или str_replace
$newHref = str_ireplace("/app/?query=", "/newapp/?q=", $href);