Sigo sin resolverlo. Creo que las expresiones regulares para esto son difíciles, así que opté por combinarlas con otros métodos. Pero me trabé.
Lo que necesito es buscar links en una pagina. Los links puede que tengan un subfijo _de o _es o lo que fuere. O también puede que no lo tengan. Yo lo que necesito, en todo caso, es reemplazar ese subfijo por otro:
Código PHP:
$subfix = $_POST['subfix'];
$pageID = $_POST['pageID'];
$sections = mysql_query("SELECT sections FROM manual_contents WHERE page_id = '$pageID'") or die("Error selecting page".mysql_error());
while ($section = mysql_fetch_array($sections)){
// anchors subfix
$hrefName = '/<a href="([^"]*)">(.*?)<\/a>/is'; // http|www|com
preg_match_all($hrefName, $section[0], $matches, PREG_SET_ORDER);
for($i=0;$i<count($matches);$i++){
if (isset($matches[$i][1]) and trim($matches[$i][1]) != "") {
$link = $matches[$i][1];
if(trim(substr($link, 0, 1)) != "#") {}
elseif (strpos($link,"http") !== false) {}
elseif (strpos($link,"www") !== false) {}
elseif (strpos($link,".com") !== false) {}
else {
str_replace($subfix.".html", "_".$_SESSION['lang'].".html", $link);
}
}
};
En este codigo, primero obtengo los links. Luego compruebo:
- que el primer caracter no sea #
- que la palabra no contenga "http"
- que la palabra no contenga "www"
- que la palabra no contenga ".com"
Luego reemplazo los links que pasaron el filtro. Pero los resultados se pierden, porque no estoy modificando el texto original.... :(