Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/12/2011, 08:53
drakoncr
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 0
Busqueda Problema con funcion para Validar existencia de atributos en un html con DOMDocument

Saludos Compañeros !!!

Estoy desarrollando un validador personalizado de tag y atributos html. Leyendo las reglas por medio de un xml pero me esta dando un error:

Fatal error: Can't use function return value in write context in func.php on line 15

Y no lo he podido solucionar alguien tiene alguna idea de como solucionarlo o alguna luz para poder solucionarlo.

Aqui les dejo los codigos de los files que utilizo:

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." Es invalido");
        }
    }
}
?>
Archivo XML : rules.xml
Código HTML:
<?xml version="1.0" encoding="utf-8"?>
<rules>
  <rule category="tag" valid="FALSE">
   <tagname>p</tagname>
   <msg>invalid tag</msg>
  </rule>
    <rule category="attrib" valid="FALSE">
   <tagname>a</tagname>
   <attibute>title</attibute>
   <msg>invalid attribute</msg>
  </rule>
</rules> 
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);
        
$r=$tag->hasAttribute($attribute);
        if (
$r== TRUE)
        {
            
$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);
    
$tags->length;
    
$tag $tags->item(0);
    
$v=empty($tag);
     if (
$v==TRUE)
     {
      return 
true;
     }
    else
     {
      return 
FALSE;
     }
}
?>
Gracias pro la aydua de antemano :D