aca les muestro un ejemplo
Código PHP:
<?
$a2=" <a href=http://holaaaa something=value> <link href=' hola che!' boder> ";
function change($aver)
{
return strtoupper($aver[0]);
}
echo preg_replace_callback("/[a]*/is","change",$a2); ?>
esto trabaja perfectamente, me pasa todas las a 'a' mayuscula (fue solo para ver que funciona).
pero este otro encuentra direcciones den los href y si estan sin comillas les pone doble comillas ("); teoricamente debería devolverme todo el string $a2 con algunos cambios, pero no parte de este como me hace.
Código PHP:
<?
$a2=" <a href=http://holaaaa something=value> <link href=' hola che!' boder> ";
function ech($aver)
{
if($aver[1]{0}!='\'' && $aver[1]{0}!='"')
$av=str_replace($aver[1],'"'.$aver[1].'"',$aver[0]);
return $av;
}
$z2='/<\s*[a-z:-]+\s+.*?\s*href\s*=\s*(?:'.'([\'"`])(.*?)\\1|([^\s]+))[^>]*>/is';
echo preg_replace_callback($z2,"ech",$a2);
?>
este ultimo en vez de devolverme
Código:
<a href="http://holaaaa" something=value> <link href=' hola che!' boder>
me devuelve
Código:
<link href=' hola che!' boder>
porque?