Salve a tutti,

sto lavorando su un codice da giorni e non riesco a trovare la soluzione.
Nella mia base dati ho salvato vari testi e voglio ottenere le seguenti cose:

- Tutti i link che iniziano per http:// devono essere cambiati per un'altro codice
- I link che non iniziano per http:// o www devono rimanere uguali

Ho avanzato parte del codice peró manca molto:

String di esempio:
codice:
<p><a href="http://php.net/manual/fr/function.count.php" target="_blank" class="livepreview"></a><a href="http://www.prova.com" target="_blank" class="livepreview">www.prova.com</a>&nbsp;<a href="http://php.net/manual/fr/function.count.php" target="_blank" class="livepreview">http://php.net/manual/fr/function.count.php</a>&nbsp;</p>
codice:
  $textoentr=$rowtexto['texto'];

  $hrefs = array();
  $dom = new DOMDocument();
  $dom->loadHTML($textoentr);
  $tags = $dom->getElementsByTagName('a');
  foreach ($tags as $tag) {
  $hrefs[] =  $tag->getAttribute('href');
  }

  $retnuml=substr_count($textoentr, "href");
  $retnuml=$retnuml-1;

  $textofinapp = strip_tags($textoentr,'<p><strong><em><br/><br><span><img>');
  for ($i = 0; $i <= $retnuml; $i++) {
  $linkapp = '<a onClick="parent.postMessage(' . "'$hrefs[$i]'" . ', ' . "'*'" . '); " style="color:#f69100;">'.$hrefs[$i].'</a>';
     $textofinapp = str_replace($hrefs[$i],$linkapp, $textofinapp);
  }
Spiego il codice...

- Prima di tutto estraggo la stringa dalla base di dati:
codice:
$textoentr=$rowtexto['texto'];
- Dopo mi creo un array() con tutti i link che ci sono in string, e saranno almacenati nei vari $hrefs[0], $hrefs[1], $hrefs[2], etc...

- Poi conto con "substr_count" cuanti href ho in string, che mi serve per ripetere un ciclo for.

- Elimino tutti i tag <a> dalla catena di testo

- Chiamo il ciclo for e sostituisco nel testo ogni coincidenza dell'array con il nuovo link completo ($linkapp)


Ho 2 problema adesso:
- Non voglio che il cambio si applichi in link che non iniziano con http:// o www. Cioè i link interni della web.
- con la funzione
codice:
$textofinapp = str_replace($hrefs[$i],$linkapp, $textofinapp);
non si selezionano le parole che iniziano per www, solo riconosce le parole che iniziano con http://.

Come posso risolvere???
Grazie