Estoy trabajando en un código pero no consigo encontrar la solución.
En mi base de datos tengo unos cuantos textos y quiero conseguir lo siguiente:
- Todo los enlaces que empiecen por http:// tienen que ser sustuidos por otro código
- Los enlaces que NO inician por per http:// o www tienen que quedarse igual.
He avanzado parte del código pero tengo probemas:
Esto es un texto (string) de ejemplo:
Código:
Este es mi código:<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> <a href="http://php.net/manual/fr/function.count.php" target="_blank" class="livepreview">http://php.net/manual/fr/function.count.php</a> </p>
Código:
Explico el codigo...$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); }
- Antes de nada saco el string de mi base de datos.
- Luego creo un array() con cada uno de los enlaces que tiene el string, estos vienen almacenados en los diferentes $hrefs[0], $hrefs[1], $hrefs[2], etc...
- Luego cuento con "substr_count" cuantos href tengo, para crear un ciclo for.
- Elimino todos los tags <a> de mi string
- Uso for y sustituyo en el texto cada coincidencia del array con el nuevo enlace completo ($linkapp)
Tengo 2 problema:
- No quiero que este script funcione sobre los enlaces que no empiecen por http:// o www. Quiero decir, los link internos.
- Con la función:
Código:
no se seleccionan las palabras que empiezan por www., solo selecciona las con http://.$textofinapp = str_replace($hrefs[$i],$linkapp, $textofinapp);
Vaya lio, como puedo arreglar el código?!?!
Gracias