Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - LuffyFF

#1
Tengo un problema que me está matando la cabeza...

Estoy intentando hacer un sistema de validación con encadenación (method chaining) en PHP para mi framework en PHP

Lo que quiero hacer es lo siguiente (revisar comentarios en PHP):

Código (php) [Seleccionar]
$nombre = $objeto->Forms->Campo("nombre")->Validar(); //Validar si "nombre" está vacío o no. Si está vacío se agrega a un array dedicado a los campos vacios. Tiene que devolver el valor del campo nombre
$apellido = $objeto->Forms->Campo("apellido"); //Este no hace falta validar si está vacío o no, así que no hace falta Validar(); Este es el que me da problema. No sé como se hace para que no se necesite pasar ->Validar(); Tiene que devolver el valor de campo apellido
$email = $objeto->Forms->Campo("email")->ValidarEmail(); //Lo mismo pero para validar Email();. Tiene que devolver el valor de email
echo $nombre . " " . $apellido . " " . $email;


Practicamente lo que quiero hacer es esto
Código (php) [Seleccionar]
$objecto
$objecto->a();
$objecto->a()->b();
$objecto->a()->c();



Salu2
#2
PHP / Clase de auto keywords, acentos.
20 Julio 2011, 21:03 PM
Tengo la siguiente clase: http://www.phpclasses.org/package/3245-PHP-Automatically-suggest-keywords-from-content-text.html

Código (php) [Seleccionar]
<?php
class autokeyword {

//declare variables
//the site contents
var $contents;
var $encoding;
//the generated keywords
var $keywords;
//minimum word length for inclusion into the single word
//metakeys
var $wordLengthMin;
var $wordOccuredMin;
//minimum word length for inclusion into the 2 word
//phrase metakeys
var $word2WordPhraseLengthMin;
var $phrase2WordLengthMinOccur;
//minimum word length for inclusion into the 3 word
//phrase metakeys
var $word3WordPhraseLengthMin;
//minimum phrase length for inclusion into the 2 word
//phrase metakeys
var $phrase2WordLengthMin;
var $phrase3WordLengthMinOccur;
//minimum phrase length for inclusion into the 3 word
//phrase metakeys
var $phrase3WordLengthMin;

function autokeyword($params$encoding)
{

//get parameters
$this->encoding $encoding;

mb_internal_encoding($encoding);

$this->contents $this->replace_chars($params['content']);

// single word
$this->wordLengthMin $params['min_word_length'];
$this->wordOccuredMin $params['min_word_occur'];

// 2 word phrase
$this->word2WordPhraseLengthMin $params['min_2words_length'];
$this->phrase2WordLengthMin $params['min_2words_phrase_length'];
$this->phrase2WordLengthMinOccur $params['min_2words_phrase_occur'];

// 3 word phrase
$this->word3WordPhraseLengthMin $params['min_3words_length'];
$this->phrase3WordLengthMin $params['min_3words_phrase_length'];
$this->phrase3WordLengthMinOccur $params['min_3words_phrase_occur'];

//parse single, two words and three words

}

function get_keywords()
{
$keywords $this->parse_words().$this->parse_2words().$this->parse_3words();
return substr($keywords0, -2);
}

//turn the site contents into an array
//then replace common html tags.
function replace_chars($content)
{
//convert all characters to lower case
$content mb_strtolower($content);
//$content = mb_strtolower($content, "UTF-8");
$content strip_tags($content);

$punctuations = array(','')''(''.'"'"'"',
'<''>''!''?''&ldquo;''&rdquo;''/''-',
'_''['']'':'';''+''=''#',
'$''&quot;''&copy;''039;''nbsp;''nbsp',
'&aacute;''&eacute;''&bull;''bull;''aacute''eacute''uacute''ntilde''Ntilde''oacute''iacute''&iacute;'
'&oacute;''&uacute''&nbsp;''&iquest;''&hellip;''hellip''&iexcl;''iexcl;''iquest;''iquest''iexcl''nbsp;''&ntilde''mdash;''&mdash;''mdash''&mdash''ldquo;''&ldquo;''ldquo''&ldquo''rdquo;''&rdquo;''rdquo''&rdquo''&Ntilde''&039;''&''&gt;''&lt;',
chr(10), chr(13), chr(9));

$content str_replace($punctuations" "$content);
// replace multiple gaps
$content preg_replace('/ {2,}/si'" "$content);

return $content;
}

//single words META KEYWORDS
function parse_words()
{
//list of commonly used words
// this can be edited to suit your needs
$common = array("m&aacute;s""039;m");
//create an array out of the site contents
$s split(" "$this->contents);
//initialize array
$k = array();
//iterate inside the array
foreach( $s as $key=>$val ) {
//delete single or two letter words and
//Add it to the list if the word is not
//contained in the common words list.
if(mb_strlen(trim($val)) >= $this->wordLengthMin  && !in_array(trim($val), $common)  && !is_numeric(trim($val))) {
$k[] = trim($val);
}
}
//count the words
$k array_count_values($k);
//sort the words from
//highest count to the
//lowest.
$occur_filtered $this->occure_filter($k$this->wordOccuredMin);
arsort($occur_filtered);

$imploded $this->implode(", "$occur_filtered);
//release unused variables
unset($k);
unset($s);

return $imploded;
}
function parse_2words()
{
//create an array out of the site contents
$x split(" "$this->contents);
//initilize array

//$y = array();
for ($i=0$i count($x)-1$i++) {
//delete phrases lesser than 5 characters
if( (mb_strlen(trim($x[$i])) >= $this->word2WordPhraseLengthMin ) && (mb_strlen(trim($x[$i+1])) >= $this->word2WordPhraseLengthMin) )
{
$y[] = trim($x[$i])." ".trim($x[$i+1]);
}
}

//count the 2 word phrases
$y = @array_count_values($y);

$occur_filtered $this->occure_filter($y$this->phrase2WordLengthMinOccur);
//sort the words from highest count to the lowest.
arsort($occur_filtered);

$imploded $this->implode(", "$occur_filtered);
//release unused variables
unset($y);
unset($x);

return $imploded;
}

function parse_3words()
{
//create an array out of the site contents
$a split(" "$this->contents);
//initilize array
$b = array();

for ($i=0$i count($a)-2$i++) {
//delete phrases lesser than 5 characters
if( (mb_strlen(trim($a[$i])) >= $this->word3WordPhraseLengthMin) && (mb_strlen(trim($a[$i+1])) > $this->word3WordPhraseLengthMin) && (mb_strlen(trim($a[$i+2])) > $this->word3WordPhraseLengthMin) && (mb_strlen(trim($a[$i]).trim($a[$i+1]).trim($a[$i+2])) > $this->phrase3WordLengthMin) )
{
$b[] = trim($a[$i])." ".trim($a[$i+1])." ".trim($a[$i+2]);
}
}

//count the 3 word phrases
$b array_count_values($b);
//sort the words from
//highest count to the
//lowest.
$occur_filtered $this->occure_filter($b$this->phrase3WordLengthMinOccur);
arsort($occur_filtered);

$imploded $this->implode(", "$occur_filtered);
//release unused variables
unset($a);
unset($b);

return $imploded;
}

function occure_filter($array_count_values$min_occur)
{
$occur_filtered = array();
foreach ($array_count_values as $word => $occured) {
if ($occured >= $min_occur) {
$occur_filtered[$word] = $occured;
}
}

return $occur_filtered;
}

function implode($gule$array)
{
$c "";
foreach($array as $key=>$val) {
@$c .= $key.$gule;
}
return $c;
}
}
?>


Lo que hace la clase es buscar palabras repetidas y mostrarlas
Tengo el siguiente texto
"La convocatoria de reuni&oacute;n es una notificaci&oacute;n. Reuni&oacute;n. Reuni&oacute;n. Reuni&oacute;n"
Deberia marcarme Reuni&oacute;n, pero lo que me marca es solamente reuni y se corta.

Alguien sabe a que se debe el problema, o como lo podria arreglar?

La palabra es reuni&oacute;n y no reunión solo

Gracias
Salu2
#3
Juegos y Consolas / Encuesta: Mejor MMORPG?
14 Septiembre 2004, 07:49 AM
Pues eso...

Pa mi, sin duda Ragnarok Online

Aver que dicen ustedes  :P