Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/12/2011, 12:01
drakoncr
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problema con funcion para Validar existencia de atributos en un html con D

Gracias iovan pero el problema estaba en la forma que estructure el array use ( en vez de [ Por aquello aqui les dejo el codigo corregido:
Archivo XML rules.xml
Código HTML:
<?xml version="1.0" encoding="utf-8"?>
<rules>
  <rule category="tag" valid="FALSE">
   <tagname>p</tagname>
   <msg>Uso ino debido de la etiqueta P</msg>
  </rule>
    <rule category="attrib" valid="FALSE">
   <tagname>a</tagname>
   <attibute>title</attibute>
   <msg>Falta atributo title en las etiquetas a</msg>
  </rule>
</rules> 
Archivo PHp parser.php
Código PHP:
<?
include_once('inc/func.php');
$htmlUrl "data/email.html"
$html file_get_contents($htmlUrl);
$xmlUrl "data/rules.xml"
$xmlStr file_get_contents($xmlUrl);
$xmlObj simplexml_load_string($xmlStr);
foreach (
$xmlObj->rule as $rule)
{
    if (
$rule['category']=='tag')
    {
        if (
tagExitsInTag($rule->tagname,$html) == $rule['valid'])
        {
         echo(
"Uso de la Etiqueta ".$rule->tagname." ".$rule->msg."<br/>");
        }
    }
    else
    {
        if (
$rule['category']=='attrib')
        {
            
$val=attrbibuteExitsInTag($rule->tagname,$rule->attibute,$html);
            for (
$i 0$i count($val); $i++)
            {        
                if (
$val[$i] == $rule['valid'])
                {
                  echo(
"Uso de la Etiqueta ".$rule->tagname."  ".$rule->msg."<br/>");
                }
            
            }    
        }
    }
}
?>
Archivo PHP func.php
Código PHP:
<?php
//funcion para  saber si existe un atributo dentro de un tag
function attrbibuteExitsInTag($eti,$attribute,$html)
{
    @
$dom = new DOMDocument();
    @
$dom->loadHTML($html);
    
$xpath = new DOMXPath($dom);
    
$tags $xpath->evaluate("/html/body//".$eti);
    for (
$i 0$i $tags->length$i++)
    {
        
$tag $tags->item($i);
        if (
$tag->hasAttribute($attribute))
        {
            
$items[$i]= FALSE;
        }
        else
        {
            
$items[$i]=TRUE;
        }
    }
    return(
$items);
}
//funcion para  saber si existe un Tag de terminado
function tagExitsInTag($eti,$html)
{
    @
$dom = new DOMDocument();
    @
$dom->loadHTML($html);
    
$xpath = new DOMXPath($dom);
    
$tags $xpath->evaluate("/html/body//".$eti);
     if ((
$tags->length) > 0)
     {
      return 
TRUE;
     }
    else
     {
      return 
FALSE;
     }
}
?>