Autor Zpráva
gustavek22
Profil
Zdravim. Jsem začátečník v php a chtěl bych se zeptat, kde dělám v tomto scriptu chybu.
<?php 

$word = explode("\n",$_POST['keywordlist']);          
$typos = array();
$typos = cTypoGenerator::getWrongKeyTypos( $word );

// výpis hodnot podle indexu pomocí cyklusu FOR
for ($i=0;$i<count($typos);$i++)
{
$typokeyword = $typos[$i].".com<br />";
echo $typokeyword; 
}  
echo "<form method='post' action='typo_generator.php'>Keyword List:<br /><textarea cols='40' rows='10' name='keywordlist'></textarea><input type='submit' value='Generate'></form>";                         

class cTypoGenerator
{

// array of keys near character on a QWERTY keyboard
// only valid characters in a domain name
    static $keyboard = array(
// top row
        '1' => array( '2', 'q' ),
        '2' => array( '1', 'q', 'w', '3' ),
        '3' => array( '2', 'w', 'e', '4' ),
        '4' => array( '3', 'e', 'r', '5' ),
        '5' => array( '4', 'r', 't', '6' ),
        '6' => array( '5', 't', 'y', '7' ),
        '7' => array( '6', 'y', 'u', '8' ),
        '8' => array( '7', 'u', 'i', '9' ),
        '9' => array( '8', 'i', 'o', '0' ),
        '0' => array( '9', 'o', 'p', '-' ),
        '-' => array( '0', 'p' ),
// 2nd from top
        'q' => array( '1', '2', 'w', 'a' ),
        'w' => array( 'q', 'a', 's', 'e', '3', '2' ),
        'e' => array( 'w', 's', 'd', 'r', '4', '3' ),
        'r' => array( 'e', 'd', 'f', 't', '5', '4' ),
        't' => array( 'r', 'f', 'g', 'y', '6', '5' ),    
        'y' => array( 't', 'g', 'h', 'u', '7', '6' ),
        'u' => array( 'y', 'h', 'j', 'i', '8', '7' ),
        'i' => array( 'u', 'j', 'k', 'o', '9', '8' ),
        'o' => array( 'i', 'k', 'l', 'p', '0', '9' ),
        'p' => array( 'o', 'l', '-', '0' ),
// home row
        'a' => array( 'z', 's' , 'w', 'q' ),
        's' => array( 'a', 'z', 'x', 'd', 'e', 'w' ),
        'd' => array( 's', 'x', 'c', 'f', 'r', 'e' ),
        'f' => array( 'd', 'c', 'v', 'g', 't', 'r' ),
        'g' => array( 'f', 'v', 'b', 'h', 'y', 't' ),
        'h' => array( 'g', 'b', 'n', 'j', 'u', 'y' ),
        'j' => array( 'h', 'n', 'm', 'k', 'i', 'u' ),
        'k' => array( 'j', 'm', 'l', 'o', 'i' ),
        'l' => array( 'k', 'p', 'o' ),
// bottom row
        'z' => array( 'x', 's', 'a' ),
        'x' => array( 'z', 'c', 'd', 's' ),
        'c' => array( 'x', 'v', 'f', 'd' ),
        'v' => array( 'c', 'b', 'g', 'f' ),
        'b' => array( 'v', 'n', 'h', 'g' ),
        'n' => array( 'b', 'm', 'j', 'h' ),
        'm' => array( 'n', 'k', 'j' )
    );


// accepts a string
// returns array of likely single "wrong key" typos
// arrays contain only characters that are valid domain names

    function getWrongKeyTypos( $word )
    {
        $typos = array();
        $length = strlen( $word );
// check each character
        for( $i = 0; $i < $length; $i++ )
        {
// if character has replacements then create all replacements
            if( cTypoGenerator::$keyboard[$word{$i}] )
            {
// temp word for manipulating
                $tempWord = $word;
                foreach( cTypoGenerator::$keyboard[$word{$i}] as $char )
                {
                    $tempWord{$i} = $char;            
                    array_push( $typos, $tempWord );
                }
            }
        }

        return $typos;
    }

}


?>

Jedná se o generátor typo domén, kde potřebuji, abych mohl na každý řádek vložit jedno slovo, které z toho vytvoří několik tvarů. Když jsem tam tedy vložil funkci explode, tak mi to od té doby hlásí chybu "Warning: strlen() expects parameter 1 to be string, array given in /data/web/virtuals/23731/virtual/www/typo_generator.php on line 121", tedy na řádek, kde je funkce strlen. Nevíte jak tento problém vyřešit? Díky
Tori
Profil
gustavek22:
explode vrací pole, metoda getWrongKeyTypos chce řetězec.
gustavek22
Profil
Tori:
Jakou funkcí by se to tedy mělo nahradit?
Taps
Profil
gustavek22:
zkus
<?
$word = explode("\n",$_POST['keywordlist']);          
$typos = array();
foreach($word as $slova){
$typos[] = cTypoGenerator::getWrongKeyTypos( $slova );
}
?>
gustavek22
Profil
Taps:
toto mi vypisuje pouze jeden. zdá se mi, že tomu nerozumí strlen, takže vrací počet znaků slova na 1

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: