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