code: static function FindStartTagHavingAtt(&$Txt, $Att, $PosBeg, $Forward=true) {
  
  		$p = $PosBeg - (($Forward) ? 1 : -1);
  		$x = (strpos($Att, '=')===false) ? (' '.$Att.'="') : (' '.$Att); // get the item more precise if not yet done
  		$search = true;
  
  		do {
  			if ($Forward) {
  				$p = strpos($Txt, $x, $p+1);
  			} else {
  				$p = strrpos(substr($Txt, 0, $p+1), $x);
  			}
  			if ($p===false) return false;
  			do {
  			  $p = $p - 1;
  			  if ($p<0) return false;
  			  $z = $Txt[$p];
  			} while ( ($z!=='<') && ($z!=='>') );
  			if ($z==='<') $search = false;
  		} while ($search);
  
  		return new clsTbsXmlLoc($Txt, '', $p);
  
  	}
docs: The given attribute can be with or without a specific value. Example: 'visible' or 'visible="1"'