PHP不执行功能

时间:2012-01-24 18:22:12

标签: php function

已解决:阅读以下评论@Eray。

我有一个PHP函数来查看文本并将文本表情符号转换为图像。 :),:(,:|等等。我还有一个查看文本并用HTML替换BBCode的函数。我在数据库的字符串上执行这些函数。这两个函数都使用全局变量$ newtext。

emoticon($row['words']);
bb($row['words']);
echo "<b>" . $row['username'] . "</b> - " . $row['time'];
echo "<p>" . $newtext . "</p>";
echo "";

关于这一点的奇怪之处在于,现在(我不记得我做了什么)表情符号功能不起作用,但是bb功能确实如此。通过不起作用,我的意思是不替换任何东西。文字仍为文字。这之前已经奏效了。此外,每隔几次,$ newtext就会出现在用户名之前。这是我的职能......

function emoticon($text)
{
global $newtext;
$newtext=str_replace(":)", "<img src='emoticons/smile.gif'>", $text);
$newtext=str_replace(":(", "<img src='emoticons/sad.gif'>", $newtext);
$newtext=str_replace(":D", "<img src='emoticons/biggrin.gif'>", $newtext);
$newtext=str_replace(":p", "<img src='emoticons/tongue.gif'>", $newtext);
$newtext=str_replace(":P", "<img src='emoticons/tongue.gif'>", $newtext);
$newtext=str_replace(":|", "<img src='emoticons/neutral.gif'>", $newtext);
$newtext=str_replace("8)", "<img src='emoticons/cool.gif'>", $newtext);
$newtext=str_replace("8D", "<img src='emoticons/cool.gif'>", $newtext);
$newtext=str_replace(":o", "<img src='emoticons/surprised.gif'>", $newtext);
$newtext=str_replace(":O", "<img src='emoticons/surprised.gif'>", $newtext);
$newtext=str_replace(";)", "<img src='emoticons/wink.gif'>", $newtext);
$newtext=str_replace("^<**>^", "<img src='emoticons/crab.gif'>", $newtext);
}

function bb($text) 
{
global $newtext;
$array=array(

"[b]" => "<b>",
"[/b]" => "</b>",

"[i]" => "<i>",
"[/i]" => "</i>",

"[u]" => "<u>",
"[/u]" => "</u>",

"[big]" => "<h1>",
"[/big]" => "</h1>",

);
$newtext = str_ireplace(array_keys($array), array_values($array), $text);
}
你能解释或帮助我吗?另外,有没有比使用全局变量更好的方法?我知道他们可能有点“危险”。

4 个答案:

答案 0 :(得分:0)

我认为你最好这样做:

$text = $row['words'];
$text = emoticon($text);
$text = bb($text);
echo "<b>" . $row['username'] . "</b> - " . $row['time'];
echo "<p>" . $text . "</p>";
echo "";

然后编辑你的功能:

function emoticon($text)
{
    // remove this line: global $newtext;
    $text=str_replace(":)", "<img src='emoticons/smile.gif'>", $text);
    // etc...
    $text=str_replace("^<**>^", "<img src='emoticons/crab.gif'>", $text);

    return $text;
}

function bb($text) 
{
    // remove this line: global $newtext;
    $array=array(
    // etc...
    );
    return str_ireplace(array_keys($array), array_values($array), $text);
}

答案 1 :(得分:0)

首先,定义您的PHP函数:

function emoticon ( $string )
{
    $emoticons = array( ':)' , ';)' );
    $icons = ('happy.gif','wink.gif');
    return str_replace( $emoticons, $icons , $string );
}

function bb( $string )
{
    //BOLD [b]text[/b]
    $string = preg_replace('/(\[b\]([\w\d\s\.]+)\[\/b\])/i','<b>$2</b>',$string);

    //ITALIC [i]text[/i]
    $string = preg_replace('/(\[i\]([\w\d\s\.]+)\[\/i\])/i','<em>$2</em>',$string);

    //UNDERLINE [u]text[/u]
    $string = preg_replace('/(\[u\]([\w\d\s\.]+)\[\/u\])/i','<u>$2</u>',$string);

    return $string;
}

其次,叫你PHP定义的函数:

echo bb( "[b]Bold[/b]" ); //Return <b>Bold</b>
  

粗体

echo bb( "[i]Italic[/i]" ); //Return <em>Italic</em>
  

粗体

echo bb( "[i]My [b]Text[/b][/i]" ); //Return <em>My <b>Text</b></em>
  

我的文字

$var = $_POST['foo'];

echo bb( $var );

第三,测试您的代码:

emoticon($row['words']);
bb($row['words']);
echo "<b>" . $row['username'] . "</b> - " . $row['time'];
echo "<p>" . $newtext . "</p>";
echo "";

答案 2 :(得分:0)

function emoticon($text)
{
$smiley = array(
    ':)',
    ':(',
);

$replace = array(
    "<img src='emoticons/smile.gif'>",
    "<img src='emoticons/sad.gif'>",
);

     return str_replace($smiley, $replace, $text);
}

答案 3 :(得分:-1)

没有测试它,但这应该做:

请注意,我没有使用global $newtext创建局部变量,而是通过return将其返回到外部范围。

function emoticon($text) {
    $newtext=str_replace(":)", "<img src='emoticons/smile.gif'>", $text);
    $newtext=str_replace(":(", "<img src='emoticons/sad.gif'>", $newtext);
    $newtext=str_replace(":D", "<img src='emoticons/biggrin.gif'>", $newtext);
    $newtext=str_replace(":p", "<img src='emoticons/tongue.gif'>", $newtext);
    $newtext=str_replace(":P", "<img src='emoticons/tongue.gif'>", $newtext);
    $newtext=str_replace(":|", "<img src='emoticons/neutral.gif'>", $newtext);
    $newtext=str_replace("8)", "<img src='emoticons/cool.gif'>", $newtext);
    $newtext=str_replace("8D", "<img src='emoticons/cool.gif'>", $newtext);
    $newtext=str_replace(":o", "<img src='emoticons/surprised.gif'>", $newtext);
    $newtext=str_replace(":O", "<img src='emoticons/surprised.gif'>", $newtext);
    $newtext=str_replace(";)", "<img src='emoticons/wink.gif'>", $newtext);
    $newtext=str_replace("^<**>^", "<img src='emoticons/crab.gif'>", $newtext);

    return $newtext;
}

function bb($text) {
    $array=array(
        "[b]" => "<b>",
        "[/b]" => "</b>",

        "[i]" => "<i>",
        "[/i]" => "</i>",

        "[u]" => "<u>",
        "[/u]" => "</u>",

        "[big]" => "<h1>",
        "[/big]" => "</h1>",
    );

    return str_ireplace(array_keys($array), array_values($array), $text);
}

$row['words'] = emoticon( $row['words'] );

$row['words'] = bb( $row['words'] );