Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php UBB/Smileys赢得';什么时候都不能代替_Php - Fatal编程技术网

Php UBB/Smileys赢得';什么时候都不能代替

Php UBB/Smileys赢得';什么时候都不能代替,php,Php,对于下面的代码,一些笑脸将不起作用(文本不会替换为笑脸)。当我更改$smileys数组的顺序时,坏掉的smileys可以工作,而其他的不能 所以我知道$smileys数组的顺序决定了smileies的替换,但我不知道为什么 有人能帮我让所有的笑脸都正常工作吗?谢谢 public $smileys = array( 'tongetje.gif' => array(':p',':P'), 'cool.gif' => array(':8'), 'dansen.g

对于下面的代码,一些笑脸将不起作用(文本不会替换为笑脸)。当我更改$smileys数组的顺序时,坏掉的smileys可以工作,而其他的不能

所以我知道$smileys数组的顺序决定了smileies的替换,但我不知道为什么

有人能帮我让所有的笑脸都正常工作吗?谢谢

public $smileys = array(
    'tongetje.gif'  => array(':p',':P'),
    'cool.gif'  => array(':8'),
    'dansen.gif'=> array('(dance)'),
    'mondje_dicht.gif' => array(':|'),
    'muur_hoofd.gif'    => array('|:('),
    'huilen.gif'    => array('(h)'),
    'loser.gif' => array('(:)'),
    'lachje.gif' => array(':)',':-)'),
    'wink.gif'  => array(';)'),
    'lach.gif'  => array(':d',':-D'),
    'lollol.gif'    => array(':#'),
    'bloos.gif' => array('(b)'),
    'stom.gif'  => array(':s'),
    'doei.gif'  => array('(d)'),
    'engeltje.gif' => array('O-)'),
    'boze_smiley.gif' => array(':('),
    '1april.gif' => array(':1)'),
    'koning.gif' => array('(koning)'),
    'offtopic.gif' => array('*-*'),
    'opgeven_verlegen.gif' => array('O+'),
     'piraat.gif' => array(':F'),
    'politie.gif' => array('(p)'),
    'reggae.gif' => array('(r)'),
    'jammie.gif' => array(':9'),
    'schamen.gif' => array(':-8'),
    'verliefd.gif' => array(':00'),
    'middelvinger.gif' => array(':--')
);      

private function ubb_smileys($string) {
    $counter = 1;
    foreach($this->smileys as $imagename => $imagetags) {
        if(is_numeric($this->smilies_enable)) {
            if($counter <= $this->smilies_enable) {
                foreach($imagetags as $int => $tag) {
                    $tag = str_replace("\\", "", $tag);
                    $src = UBB_SMILEYS_PATH.$imagename;
                    $image = UBB_SMILEYS_STRING;
                    $image = str_replace('${TAG}', $tag, $image);
                    $image = str_replace('${SRC}', $src, $image);
                    $string = str_replace($tag, $image, $string);

                }
            }
        } else {
            foreach($imagetags as $int => $tag) {
                $tag = str_replace("\\", "", $tag);
                $src = UBB_SMILEYS_PATH.$imagename;
                $image = UBB_SMILEYS_STRING;
                $image = str_replace('${TAG}', $tag, $image);
                $image = str_replace('${SRC}', $src, $image);
                $string = str_replace($tag, $image, $string);

            }
        }
        $counter++;
    }
    return $string;
}
<pre>
<?php
define('UBB_SMILEYS_PATH', 'c:\\');
define('UBB_SMILEYS_STRING', '(img src="${SRC}" alt="${TAG}" /)');
class ubb {
var $smilies_enable = true;
 public $smileys = array(
    'tongetje.gif'  => array(':p',':P'),
    'cool.gif'  => array(':8'),
    'dansen.gif'=> array('(dance)'),
    'mondje_dicht.gif' => array(':|'),
    'muur_hoofd.gif'    => array('|:('),
    'huilen.gif'    => array('(h)'),
    'loser.gif' => array('(:)'),
    'lachje.gif' => array(':)',':-)'),
    'wink.gif'  => array(';)'),
    'lach.gif'  => array(':d',':-D'),
    'lollol.gif'    => array(':#'),
    'bloos.gif' => array('(b)'),
    'stom.gif'  => array(':s'),
    'doei.gif'  => array('(d)'),
    'engeltje.gif' => array('O-)'),
    'boze_smiley.gif' => array(':('),
    '1april.gif' => array(':1)'),
    'koning.gif' => array('(koning)'),
    'offtopic.gif' => array('*-*'),
    'opgeven_verlegen.gif' => array('O+'),
     'piraat.gif' => array(':F'),
    'politie.gif' => array('(p)'),
    'reggae.gif' => array('(r)'),
    'jammie.gif' => array(':9'),
    'schamen.gif' => array(':-8'),
    'verliefd.gif' => array(':00'),
    'middelvinger.gif' => array(':--')
);      

 public function ubb_smileys($string) {
    $counter = 0;
    foreach($this->smileys as $imagename => $imagetags) {
        $f = false;
        if(is_numeric($this->smilies_enable)) {
            if($counter <= $this->smilies_enable) {
                foreach($imagetags as $int => $tag) {
                    $tag = str_replace("\\", "", $tag);
                    $src = UBB_SMILEYS_PATH.$imagename;
                    $image = UBB_SMILEYS_STRING;
                    $image = str_replace('${TAG}', $tag, $image);
                    $image = str_replace('${SRC}', $src, $image);
                    if(strstr($string, $tag)) {
                        $string = str_replace($tag, $image, $string);
                        $f = true;
                        break;
                    }
                }
            }
        } else {
            foreach($imagetags as $int => $tag) {
                $tag = str_replace("\\", "", $tag);
                $src = UBB_SMILEYS_PATH.$imagename;
                $image = UBB_SMILEYS_STRING;
                $image = str_replace('${TAG}', $tag, $image);
                $image = str_replace('${SRC}', $src, $image);
                if(strstr($string, $tag)) {
                    $string = str_replace($tag, $image, $string);
                    $f = true;
                    break;
                }
            }
        }
        $counter++;
        if($f) break;
    }
    return $string;
}
}

$ubb = new ubb();
foreach($ubb->smileys as $s) {
    foreach($s as $ss) {
        $phr = "lol $ss";
        echo $phr . " -&gt; " .($ubb->ubb_smileys($phr));
        echo "<br/>";
    }
}
public$smileys=array(
'tongetje.gif'=>数组(':p',':p'),
'cool.gif'=>数组(':8'),
'dansen.gif'=>数组('(舞蹈)',
'mondje_dict.gif'=>数组(':|'),
'muur_hoofd.gif'=>数组('|::('),
'huilen.gif'=>数组('(h)',
'loser.gif'=>array('(:)'),
'lachje.gif'=>数组(':)',':-),
'wink.gif'=>数组(';)'),
'lach.gif'=>数组(':d',':-d'),
'lollol.gif'=>数组(':#'),
'bloos.gif'=>数组('b'),
'stom.gif'=>数组(':s'),
'doei.gif'=>数组('(d)',
'engeltje.gif'=>数组('O-'),
'boze_smiley.gif'=>数组(':('),
'1april.gif'=>数组(':1'),
'koning.gif'=>数组('(koning)',
'offtopic.gif'=>数组('*-*'),
'opgeven_verlegen.gif'=>数组('O+'),
'piraat.gif'=>数组(':F'),
'politie.gif'=>数组('(p)',
'reggae.gif'=>数组('(r)',
'jammie.gif'=>数组(':9'),
'schamen.gif'=>数组(':-8'),
'verliefd.gif'=>数组(':00'),
'middelvinger.gif'=>数组(':--')
);      
私有函数ubb_smileys($string){
$counter=1;
foreach($this->smileys为$imagename=>$imagetags){
如果(是数字($this->smilies\u enable)){
如果($counter smilies\u enable){
foreach($imagetags作为$int=>$tag){
$tag=str\u替换(“\\”、“”、$tag);
$src=UBB\u SMILEYS\u路径。$imagename;
$image=UBB\u SMILEYS\u字符串;
$image=str_replace('${TAG}',$TAG$image);
$image=str_replace('${SRC}',$SRC,$image);
$string=str_replace($tag,$image,$string);
}
}
}否则{
foreach($imagetags作为$int=>$tag){
$tag=str\u替换(“\\”、“”、$tag);
$src=UBB\u SMILEYS\u路径。$imagename;
$image=UBB\u SMILEYS\u字符串;
$image=str_replace('${TAG}',$TAG$image);
$image=str_replace('${SRC}',$SRC,$image);
$string=str_replace($tag,$image,$string);
}
}
$counter++;
}
返回$string;
}

我想这是因为有些笑脸是其他笑脸的子集。例如“:)”是“(:)”的子集。所以如果它出现在“:)”之前,“(:)”就永远找不到了

首先包括最复杂的笑脸,然后是另一个笑脸的子集的任何笑脸都必须随后出现

这解释了为什么排序会影响结果

这就是说---我找不到一个具体的例子来说明你们在上面发布的订单(尽管我可能找的时间不够长)。在上面的订单中,哪些微笑不适合你

编辑:

我用下面的测试。对我来说很好。您使用什么作为测试字符串

define('UBB_SMILEYS_PATH', '/images/');
define('UBB_SMILEYS_STRING', '<img src="${SRC}" alt="${TAG}" />');

class UBB {
    public $smileys_enable;

    public function __construct() {
        $this->smilies_enable = 100;
    }

    public $smileys = array(
        'tongetje.gif'  => array(':p',':P'),
        'cool.gif'  => array(':8'),
        'dansen.gif'=> array('(dance)'),
        'mondje_dicht.gif' => array(':|'),
        'muur_hoofd.gif'    => array('|:('),
        'huilen.gif'    => array('(h)'),
        'loser.gif' => array('(:)'),
        'lachje.gif' => array(':)',':-)'),
        'wink.gif'  => array(';)'),
        'lach.gif'  => array(':d',':-D'),
        'lollol.gif'    => array(':#'),
        'bloos.gif' => array('(b)'),
        'stom.gif'  => array(':s'),
        'doei.gif'  => array('(d)'),
        'engeltje.gif' => array('O-)'),
        'boze_smiley.gif' => array(':('),
        '1april.gif' => array(':1)'),
        'koning.gif' => array('(koning)'),
        'offtopic.gif' => array('*-*'),
        'opgeven_verlegen.gif' => array('O+'),
         'piraat.gif' => array(':F'),
        'politie.gif' => array('(p)'),
        'reggae.gif' => array('(r)'),
        'jammie.gif' => array(':9'),
        'schamen.gif' => array(':-8'),
        'verliefd.gif' => array(':00'),
        'middelvinger.gif' => array(':--')
    );      

    private function ubb_smileys($string) {
        $counter = 1;
        foreach($this->smileys as $imagename => $imagetags) {
            if(is_numeric($this->smilies_enable)) {
                if($counter <= $this->smilies_enable) {
                    foreach($imagetags as $int => $tag) {
                        $tag = str_replace("\\", "", $tag);
                        $src = UBB_SMILEYS_PATH.$imagename;
                        $image = UBB_SMILEYS_STRING;
                        $image = str_replace('${TAG}', $tag, $image);
                        $image = str_replace('${SRC}', $src, $image);
                        $string = str_replace($tag, $image, $string);

                    }
                }
            } else {
                foreach($imagetags as $int => $tag) {
                    $tag = str_replace("\\", "", $tag);
                    $src = UBB_SMILEYS_PATH.$imagename;
                    $image = UBB_SMILEYS_STRING;
                    $image = str_replace('${TAG}', $tag, $image);
                    $image = str_replace('${SRC}', $src, $image);
                    $string = str_replace($tag, $image, $string);

                }
            }
            $counter++;
        }
        return $string;
    }
    public function parse_smileys($str) {
        return $this->ubb_smileys($str);
    }
}

$ubb = new UBB();

$myStr = 'xxx :-) :s lalala (d) :( Some text';

echo($ubb->parse_smileys($myStr));
define('UBB_SMILEYS_PATH','/images/');
定义('UBB_SMILEYS_STRING','');
UBB类{
公共$smileys_启用;
公共函数构造(){
$this->smilies\u enable=100;
}
public$smileys=数组(
'tongetje.gif'=>数组(':p',':p'),
'cool.gif'=>数组(':8'),
'dansen.gif'=>数组('(舞蹈)',
'mondje_dict.gif'=>数组(':|'),
'muur_hoofd.gif'=>数组('|::('),
'huilen.gif'=>数组('(h)',
'loser.gif'=>array('(:)'),
'lachje.gif'=>数组(':)',':-),
'wink.gif'=>数组(';)'),
'lach.gif'=>数组(':d',':-d'),
'lollol.gif'=>数组(':#'),
'bloos.gif'=>数组('b'),
'stom.gif'=>数组(':s'),
'doei.gif'=>数组('(d)',
'engeltje.gif'=>数组('O-'),
'boze_smiley.gif'=>数组(':('),
'1april.gif'=>数组(':1'),
'koning.gif'=>数组('(koning)',
'offtopic.gif'=>数组('*-*'),
'opgeven_verlegen.gif'=>数组('O+'),
'piraat.gif'=>数组(':F'),
'politie.gif'=>数组('(p)',
'reggae.gif'=>数组('(r)',
'jammie.gif'=>数组(':9'),
'schamen.gif'=>数组(':-8'),
'verliefd.gif'=>数组(':00'),
'middelvinger.gif'=>数组(':--')
);      
私有函数ubb_smileys($string){
$counter=1;
foreach($this->smileys为$imagename=>$imagetags){
如果(是数字($this->smilies\u enable)){
如果($counter smilies\u enable){
foreach($imagetags作为$int=>$tag){
$tag=str\u替换(“\\”、“”、$tag);
$src=UBB\u SMILEYS\u路径。$imagename;
$image=UBB\u SMILEYS\u字符串;
$image=str_replace('${TAG}',$TAG$image);
$image=str_replace('${SRC}',$SRC,$image);
$string=str_replace($tag,$image,$string);
}
}
}否则{
foreach($imagetags作为$int=>$tag){
$tag=str\u替换(“\\”、“”、$tag);
$src=UBB\u SMILEYS\u路径。$imagename;
$image=UBB\u SMILEYS\u字符串;
$image=str_replace('${TAG}',$TAG$image);
$image=str_replace('${SRC}',$SRC,$image);
$string=str_replace($tag,$image,$string);
}
}
$counter++;
}
返回$string;
}
公共函数parse_smileys($str){
返回$this->ubb_smileys($str);
}
}
$ubb=新ubb();
$myStr='xxx:-):s lalala(d):(一些文本';
echo($ubb->parse_smileys($myStr));
我想你需要