douke9379 2012-04-27 10:47
浏览 103

MPRandomText类的对象无法在[重复]中转换为字符串

Possible Duplicate:
Object could not be converted to string?

i need to create random title to my images and i got a error

Object of class MPRandomText could not be converted to string in C:\Program Files (x86)\EasyPHP-5.3.9\www\dir.php on line 42

and how can i include the random text to my html image title ?

    class MPRandomText
    {
    var $filepath;
    var $sepstring;
    var $fixchar;
    var $textfix;
    var $contents;
    var $random;
    var $errors;
    // initiate object and start functions
    function MPRandomText($filepath, $sepstring, $textfix)
        {
        $this->filepath = $filepath;
        $this->textfix = $textfix;
        $this->sepstring = $sepstring;
        $this->errors = "";
        $this->contents = "";
        $this->FileToString();
        }
    // read file contents into string variable
    function FileToString()
        {
        if (!$this->filepath || !file_exists($this->filepath))
            $this->errors = "Could not find text file at ".$this->filepath;
            else {
            @$filePointer = fopen($this->filepath, "r");
            if (!$filePointer) $this->errors = "Text file could not be opened.";
            if ($this->errors == "")
                {
                $this->contents = fread($filePointer, filesize($this->filepath));
                fclose($filePointer);
                if (!$this->textfix) $this->HTMLContent();
                $this->MakeArray();
                }
            }
        }
    // if importing an HTML page, drop everything outside of (and including) the <body> tags
    function HTMLContent()
        {
        $test = stristr($this->contents, "<body");
        if ($test !== false)
            {
            $test = stristr($test, ">");
            if ($test !== false)
                {
                $test = str_replace("</BODY>", "</body>", $test);
                $test = explode("</body>", substr($test, 1));
                if (count($test) > 1) $this->contents = $test[0];
                }
            }
        }
    // convert the file text into a list using separation character
    function MakeArray()
        {
        $array = explode($this->sepstring, $this->contents);
        if (count($array) > 0)
            {
            $this->contents = $array;
            $this->CleanTextList();
            } else $this->errors = "Text file contents are empty or could not be read.";
        }
    // clean up the list of empty values and extra white space
    function CleanTextList()
        {
        $result = array();
        if (is_array($this->contents))
            {
            for ($n=0; $n<count($this->contents); $n++)
                {
                $string = trim($this->contents[$n]);
                $test = trim($string."test");
                if (!empty($string) AND $test != "test") $result[] = $string;
                }
            if (count($result) > 0)
                {
                $this->contents = $result;
                $this->RandomString();
                }
            }
        }
    // get random text string from list
    function RandomString()
        {
        reset($this->contents);
        srand((double) microtime() * 1000000);
        shuffle($this->contents);
        $this->random = $this->contents[0];
        }
    // send finished results to be printed into HTML page
    function GetResults()
        {
        if ($this->errors != "") return $this->errors;
            else
            {
            if ($this->textfix == true) $this->random = htmlentities($this->random);
            return $this->random;
            }
        }
    }

//-------------------------------------------------------------------------------------------------
//  FUNCTION AND VARIABLE TO CREATE RANDOM TEXT INSTANCE
//-------------------------------------------------------------------------------------------------

// create variable to store instance references
$MPRandomTextHandles = array();

// function to create new handle and import random text
function MPPrintRandomText($MPTextFile = "random.txt", $MPSepString = "*divider*", $MPTextToHTML = false)
    {
    global $MPRandomTextHandles;
    for ($n=0; $n<250; $n++)
        {
        if (!isset($MPRandomTextHandles[$n]))
            {
            $MPRandomTextHandles[$n] = new MPRandomText($MPTextFile, $MPSepString, $MPTextToHTML);
            break;
            }
        }
    print($MPRandomTextHandles[$n]->GetResults());
    return $MPRandomTextHandles[$n];
    }


    /* Начало конфигурации */
$thumb_directory = 'img/thumbs';
$orig_directory = 'img/imag';
/* Конец конфигурации */
$allowed_types=array('jpg','jpeg','gif','png');
$file_parts=array();
$ext='';
$title='';
$title1='גילוף פסלים בעץ';
$i=0;


/* Открываем папку с миниатюрами и пролистываем каждую из них */
$dir_handle = @opendir($thumb_directory) or die("There is an error with your 
image directory!");
$i=1;

while ($file = readdir($dir_handle))
{
/* Пропускаем системные файлы: */
if($file=='.' || $file == '..') continue;
$file_parts = explode('.',$file);
$ext = strtolower(array_pop($file_parts));

/* Используем название файла (без расширения) в качестве названия изображения: */
// $title = implode('.',$file_parts);
// $title = htmlspecialchars($title);
include_once("GetRandomText.php");
$MPTextFile = "random.txt";
$MPSepString = "*divider*";
$MPTextToHTML = false;
$title = MPPrintRandomText($MPTextFile, $MPSepString, $MPTextToHTML);

/* Если расширение разрешено: */
if(in_array($ext,$allowed_types))
{

/* Выдаем каждое фото: */
echo '<li>
        <a href="'.$orig_directory.'/'.$file.'" rel="lightbox[pasel]">
            <img title="'.$title.'" src="'.$thumb_directory.'/'.$file.'" width="72" height="72" alt="גילוף פסלים בעץ" />
        </a>
    </li>';
}
}
/* Закрываем папку */
closedir($dir_handle);
  • 写回答

1条回答 默认 最新

  • dongyi6195 2012-04-27 11:00
    关注

    $title is an instance of MPRandomText. You concatenate $title in the output but MPRandomText does not implement __toString(), so it can not be converted into a string.

    <?php 
    $title = MPPrintRandomText($MPTextFile, $MPSepString, $MPTextToHTML);
    // MPPrintRandomText returns an instance of MPRandomText
    
    /* Если расширение разрешено: */
    if(in_array($ext,$allowed_types))
    {
    
    /* Выдаем каждое фото: */
    echo '<li>
        <a href="'.$orig_directory.'/'.$file.'" rel="lightbox[pasel]">
            <img title="'.$title.'" src="'.$thumb_directory.'/'.$file.'" width="72"     height="72" alt="גילוף פסלים בעץ" />
        </a>
    </li>';
    // concatenating $title here will fail because MPRandomText does not implement __toString()
    }
    }
    ?>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画