Cita:
Iniciado por abimaelrc la practica, practica, practica te ayudará a comprender mejor las expresiones regulares.
Casi lo tengo, estoy muy contento con mis avances en las expresiones regulares xDDD
Modifiqué el patrón hasta poder conseguir separar los CLASS por un lado y los ID por otro. Puse robustez en el hecho que estos elementos pueden aparecer con comillas dobles o simples.
El problema que no he conseguido solucionar, es la disyunción de CLASS e ID. Falla cuando aparecen los dos en la misma linea, no coge ambos. EJEMPLO de linea
<input type="text" name="user"
id="user_login" class="neodani" value="" size="20" tabindex="1" accesskey="1"/></label>
SCRIPT
Código PHP:
Ver original$html='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<head>
<title>Área restringida | Panel de Administración</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="robots" content="noindex,nofollow"/>
<link rel="stylesheet" href="/css/entrada_login.css" type="text/css" media="all" />
<!-- Favicon -->
<link rel="shortcut icon" href="/imagenes/favicon.ico"/>
</head>
<body class="login2">
<p id="borde-top"><a class="enlace_top" href="entrada_login.php" title="Panel de Administración">ATENCIÓN: Área privada.</a></p>
<!-- Formulario Entrada -->
<div id="login">
<h1 id="titulo" title="Panel de Administración"></h1>
<form id="loginform" action="includes/login.php" method="post">
<p>
<label>Nombre de usuario<br />
<input type="text" name="user" id="user_login" class="neodani" value="" size="20" tabindex="1" accesskey="1"/></label>
</p>
<p>
<label class="prueba">Contraseña<br />
<input type="password" name="password" id="user_pass" class="input" value="" size="20" tabindex="2" accesskey="2" /></label>
</p>
<p class="forgetmenot"><label><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90" /> Recordarme</label></p>
<p class="submit">
<input type="submit" name="wp-submit" id="wp-submit" value="Iniciar Sesión" tabindex="100" />
</p>
</form>
<p id="nav">
<a class="footer" href="#">Área privada.</a>
</p>
</div>
</body>
</html>
';
function Extraer_Class_ID($html){
preg_match_all('/<(a|p|form|h1|label|input|div|body)[^>](?:(class)=["|\'](.*?)["|\'])|(?:(id)=["|\'](.*?)["|\'])[^>]*>/is',$html,$matches);
//eliminamos los repetidos
//Quedara un valor en cada array en blanco, lo eliminamos así
foreach($clases as $item)
{
if ($item!=''){$resultado_class[] = $item;} // eliminamos los blancos
}
foreach($id as $item)
{
if ($item!=''){$resultado_id[] = $item;} // eliminamos los blancos
}
return array($resultado_id,$resultado_class); }
// Llamada del script
$estilo=Extraer_Class_ID($html);
echo "<pre>";
echo "ID<br/>";
echo "<br/>CLASES<br/>";
echo "</pre>";
?>
Salida
Código:
ID
Array
(
[0] => borde-top
[1] => login
[2] => titulo
[3] => loginform
[4] => user_login
[5] => user_pass
[6] => rememberme
[7] => wp-submit
[8] => nav
)
CLASES
Array
(
[0] => login2
[1] => enlace_top
[2] => prueba
[3] => forgetmenot
[4] => submit
[5] => footer
)
Sabéis como puedo hacer para que detecte los dos cuando aparecen dentro del mismo tag html?
Gracias de antemano!