Autor Zpráva
Jiří Krutý
Profil
Zdravím všechny, kdo mi mohou pomoci.
Nainstaloval jsem si na web script v php. Jak jsem později zjistil, bylo to psáno ve starším kódu php a stránky nějaké chyby. Některé už jsem odstranil, ale zatím jsem nepřišel co tady s tímto. Poradí někdo? Díky předem
chyba je
Warning: strlen() expects parameter 1 to be string, array given in /data/web/virtuals/28967/virtual/www/inc/libs/plugins/modifier.myescape.php on line 28
s kód je takový
{
    if (strlen($string) > 20)
    { 
      $string = str_replace('<SC', '&lt;SC', $string);
      $string = str_replace('<sC', '&lt;sC', $string);
      $string = str_replace('<Sc', '&lt;Sc', $string);
      $string = str_replace('<sc', '&lt;sc', $string);
    }

    return $string;
}
Prochy
Profil
Dyť ti to hází ta chyba, píše ti to, že mu předáváš pole, ale ve funkci strlen() musí být string.
peta
Profil
Zkusim to tez trosku prelozit...
http://cz2.php.net/function.str_replace
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
str_replace('<SC', '&lt;SC', $string);
'<SC' - typu string
'&lt;SC' - typu string
$string - z uvedeneho kodu nelze urcit typ promenne, php chyba rika, ze je to array

"expects parameter 1 to be string, array given" - ocekavam 1 parametr typu string, dostal jsem ale array
Jiří Krutý
Profil
peta:
Podle toho co jsem se dočetl o této funkci, tak je to dáno nekompatibilitou nové verze php se staršími verzemi. Jak to tedy opravit?
panther
Profil
Jiří Krutý:
Podle toho co jsem se dočetl o této funkci
kde ses dočetl ,jakou nekompatibilitou?

Už tu padlo dvakrát a píše ti to i to varování, že jí předáváš jako paramatr pole, ale funkce očekává string. Co na tom nechápeš?
Prochy
Profil
Jiří Krutý:
Ukaž část kódu, kde vznikne $string až do části, kterou si zde ukázal.
Jiří Krutý
Profil
Prochy:
<?php
/**
 * Smarty plugin
 * @package Smarty
 * @subpackage plugins
 */


/**
 * Smarty cat modifier plugin
 *
 * Type:     modifier<br>
 * Name:     cat<br>
 * Date:     Feb 24, 2003
 * Purpose:  catenate a value to a variable
 * Input:    string to catenate
 * Example:  {$var|cat:"foo"}
 * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
 *          (Smarty online manual)
 * @author   Monte Ohrt <monte@ispi.net>
 * @version 1.0
 * @param string
 * @param string
 * @return string
 */
function smarty_modifier_myescape($string)
{
    if (strlen($string) > 20)
    { 
      $string = str_replace('<SC', '&lt;SC', $string);
      $string = str_replace('<sC', '&lt;sC', $string);
      $string = str_replace('<Sc', '&lt;Sc', $string);
      $string = str_replace('<sc', '&lt;sc', $string);
    }

    return $string;
}

/* vim: set expandtab: */

?>
panther
Profil
Jiří Krutý:
a proměnná, nad kteoru voláš modifikátor nebo funkci smarty_modifier_myescape obsahuje co? Odkud se bere? Z této definice funkce v PHP nic zjistit nejde.
Jiří Krutý
Profil
panther:
hledám to


Jiří Krutý:
Já to v tom kódu nemůžu nikde najít, jak to můžu nejrychleji zjistit? Není to jen test na počet znaků?


Jiří Krutý:
Já to opravdu nemůžu najít. Chybu to hází při registraci uživatele a pak i při prohlížení členské sekce, ale ne ve všech případech. Jak to můžu najít?
peta
Profil
ja ti poradim :)
function smarty_modifier_myescape($string)
{
zamen za
function smarty_modifier_myescape($string)
{
var_dump($string); // a kdyz to vypise array, tak to mas chybne
A kdyz to je chybne, tak najdi vsechny radky, kde mas retezec "smarty_modifier_myescape(" a podivej se, co tam do toho posilas.

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: