Cita:
Iniciado por abimaelrc Podrias hacerlo algo así.
Código PHP:
Ver original<?php
/* SACAR TODAS LAS ETIQUETAS, ID Y CLASES DEL ESTILO CSS */
$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="login">
<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="input" value="" size="20" tabindex="1" accesskey="1"/></label>
</p>
<p>
<label>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>
';
preg_match_all('/<(a|p|form|h1|label|body)[^>](?:(class|id)="(.*?)")[^>]*>/is',$html,$matches);
Para verlo mejor te sugiero que mires el código fuente. Pequeña explicación de algunas partes del código de expresion regular
() = cada parentesis muestra un array adicional
(?: = no se muestre un array adicional de los parentesis
[^>]* = Todo aquello que este antes y que no sea el simbolo de >
| = significa escoger entre esas opciones. Es como decir
escoge entre esto o este Muchas Gracias!
No entiendo porque aparece estructurado así el array
$matches
Código:
Array
(
[0] => Array
(
[0] =>
[1] =>
[2] => [3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] => ) [1] => Array ( [0] => body [1] => p [2] => a [3] => h1 [4] => form [5] => p [6] => p [7] => p [8] => a ) [2] => Array ( [0] => class [1] => id [2] => class [3] => id [4] => id [5] => class [6] => class [7] => id [8] => class ) [3] => Array ( [0] => login [1] => borde-top [2] => enlace_top [3] => titulo [4] => loginform [5] => forgetmenot [6] => submit [7] => nav [8] => footer ) )
Sin embargo, la parte que interesa están en estas 3 posiciones, entiendo que en la primera posición se guarda todo el lo que coincide (PRIMER PARENTESIS (a|p|form|h1|label|body))
El segundo guarda todos los id y class que están ligados directamente con el tercero.
Código:
print_r($matches[1]);
Array
(
[0] => body
[1] => p
[2] => a
[3] => h1
[4] => form
[5] => p
[6] => p
[7] => p
[8] => a
)
print_r($matches[2]);
Array
(
[0] => class
[1] => id
[2] => class
[3] => id
[4] => id
[5] => class
[6] => class
[7] => id
[8] => class
)
print_r($matches[3]);
Array
(
[0] => login
[1] => borde-top
[2] => enlace_top
[3] => titulo
[4] => loginform
[5] => forgetmenot
[6] => submit
[7] => nav
[8] => footer
)
Me gustaría hacer un bucle:
Código PHP:
foreach($matches[3] as $item)
{
print "$item<br/>" ;
}
login
borde-top
enlace_top
titulo
loginform
forgetmenot
submit
nav
footer
Que me imprima un . delante de los que son class y un # de los que son id ya que en css sino estoy equivocado siempre van acompañados del . del # según su categoría.
Gracias de antemano!