Php 无法在开关状态下获取值
在这段代码中,我正在检查用户输入值是否与我的数组键匹配我想把default纯值放在开关条件的默认部分,但它回显了empety值为什么开关默认值不工作我的错误是什么 谢谢 我为if条件添加了一个else语句,但它返回值很多次我不想要这个Php 无法在开关状态下获取值,php,Php,在这段代码中,我正在检查用户输入值是否与我的数组键匹配我想把default纯值放在开关条件的默认部分,但它回显了empety值为什么开关默认值不工作我的错误是什么 谢谢 我为if条件添加了一个else语句,但它返回值很多次我不想要这个 const EMOJI = [ ":lol" => "emoji/0046.gif", ":d" => "emoji/0055.gif", ":|" => "emoji/poker.png",
const EMOJI = [
":lol" => "emoji/0046.gif",
":d" => "emoji/0055.gif",
":|" => "emoji/poker.png",
":(" => "emoji/0005.gif",
":cool" => "emoji/0038.gif",
":shy" => "emoji/0001.gif",
":)" => "emoji/0003.gif",
":p" => "emoji/0008.gif",
":h" => "emoji/0031.gif",
":search" => "emoji/0042.gif",
":'(" => "emoji/0057.gif",
":cry" => "emoji/0048.gif",
":think" => "emoji/0052.gif",
":y" => "emoji/0053.gif",
":@" => "emoji/0052.gif",
":xd" => "emoji/0056.gif",
":punch" => "emoji/0063.gif",
":*" => "emoji/0064.gif",
":angle" => "emoji/0065.gif",
":sick" => "emoji/0013.gif",
":flower" => "emoji/0067.gif"
];
if ($_POST['method'] === 'fetch') {
$messages = $chat->fetchMessage();
if (!empty($messages)) {
foreach ($messages as $key => $value) { ?>
<div class="message" id="<?php echo $value['message_id'] ?>">
<p class="username"><?php echo $value['username']; ?></p><span style="font-size: 12px">say:</span>
<?php
$value = strtolower($value['message']);
$arraykey = array_keys(EMOJI);
for ($i = 0; $i < count($arraykey); $i++) {
if (preg_match_all("~" . preg_quote($arraykey[$i], '~') . "~", $value, $match)) {
switch ($match[0][0]) {
case ":lol":
$one = str_replace($match[0], '<img src=" '.EMOJI[":lol"].'"', $value);
echo $one;
break;
case ":d":
$one = str_replace($match[0], '<img src=" '.EMOJI[":d"].'"', $value);
echo $one;
break;
case ":|":
$one = str_replace($match[0], '<img src=" '.EMOJI[":|"].'"', $value);
echo $one;
break;
case ":(":
$one = str_replace($match[0], '<img src=" '.EMOJI[":("].'"', $value);
echo $one;
break;
case ":cool":
$one = str_replace($match[0], '<img src=" '.EMOJI[":cool"].'"', $value);
echo $one;
break;
case ":shy":
$one = str_replace($match[0], '<img src=" '.EMOJI[":shy"].'"', $value);
echo $one;
break;
case ":)":
$one = str_replace($match[0], '<img src=" '.EMOJI[":)"].'"', $value);
echo $one;
break;
case ":P":
$one = str_replace($match[0], '<img src=" '.EMOJI[":p"].'"', $value);
echo $one;
break;
case ":h":
$one = str_replace($match[0], '<img src=" '.EMOJI[":h"].'"', $value);
echo $one;
break;
case ":search":
$one = str_replace($match[0], '<img src=" '.EMOJI[":search"].'"', $value);
echo $one;
break;
case ":'(":
$one = str_replace($match[0], '<img src=" '.EMOJI[":'("].'"', $value);
echo $one;
break;
case ":cry":
$one = str_replace($match[0], '<img src=" '.EMOJI[":cry"].'"', $value);
echo $one;
break;
case ":think":
$one = str_replace($match[0], '<img src=" '.EMOJI[":think"].'"', $value);
echo $one;
break;
case ":y":
$one = str_replace($match[0], '<img src=" '.EMOJI[":y"].'"', $value);
echo $one;
break;
case ":@":
$one = str_replace($match[0], '<img src=" '.EMOJI[":@"].'"', $value);
echo $one;
break;
case ":xd":
$one = str_replace($match[0], '<img src=" '.EMOJI[":xd"].'"', $value);
echo $one;
break;
case ":punch":
$one = str_replace($match[0], '<img src=" '.EMOJI[":punch"].'"', $value);
echo $one;
break;
case ":*":
$one = str_replace($match[0], '<img src=" '.EMOJI[":*"].'"', $value);
echo $one;
break;
case ":angle":
$one = str_replace($match[0], '<img src=" '.EMOJI[":angle"].'"', $value);
echo $one;
break;
case ":sick":
$one = str_replace($match[0], '<img src=" '.EMOJI[":sick"].'"', $value);
echo $one;
break;
case ":flower":
$one = str_replace($match[0], '<img src=" '.EMOJI[":flower"].'"', $value);
echo $one;
break;
default:
echo $value;
}
} ?>
</div>
<?php
}
}
} else {
echo "empety message";
}
}
const表情符号=[
“:lol”=>“表情符号/0046.gif”,
“:d”=>“表情符号/0055.gif”,
“:|”=>“emoji/poker.png”,
“:(“=>”emoji/0005.gif“,
“:cool”=>“表情符号/0038.gif”,
“:shy”=>“表情符号/0001.gif”,
“:)”=>“表情符号/0003.gif”,
“:p”=>“表情符号/0008.gif”,
“:h”=>“emoji/0031.gif”,
“:搜索”=>“表情符号/0042.gif”,
“:”(“=>”emoji/0057.gif“,
“:cry”=>“表情符号/0048.gif”,
“:思考”=>“表情符号/0052.gif”,
“:y”=>“表情符号/0053.gif”,
“:@”=>“表情符号/0052.gif”,
“:xd”=>“表情符号/0056.gif”,
“:punch”=>“emoji/0063.gif”,
“:*”=>“emoji/0064.gif”,
“:angle”=>“emoji/0065.gif”,
“:sick”=>“emoji/0013.gif”,
“:flower”=>“emoji/0067.gif”
];
如果($_POST['method']='fetch'){
$messages=$chat->fetchMessage();
如果(!空($messages)){
foreach($key=>$value的消息){?>
说:
您试图实现的目标的简化版本:
const EMOJI = [
":lol" => "emoji/0046.gif",
":d" => "emoji/0055.gif",
":|" => "emoji/poker.png",
":(" => "emoji/0005.gif",
":cool" => "emoji/0038.gif",
":shy" => "emoji/0001.gif",
":)" => "emoji/0003.gif",
":p" => "emoji/0008.gif",
":h" => "emoji/0031.gif",
":search" => "emoji/0042.gif",
":'(" => "emoji/0057.gif",
":cry" => "emoji/0048.gif",
":think" => "emoji/0052.gif",
":y" => "emoji/0053.gif",
":@" => "emoji/0052.gif",
":xd" => "emoji/0056.gif",
":punch" => "emoji/0063.gif",
":*" => "emoji/0064.gif",
":angle" => "emoji/0065.gif",
":sick" => "emoji/0013.gif",
":flower" => "emoji/0067.gif"
];
// Here we get keys of EMOJI array
$keys = array_keys(EMOJI);
// Escape special symbols in each key
foreach ($keys as &$k) {
$k = str_replace(['|', '(', ')', '*'], ['\|', '\(', '\)', '\*'], $k);
}
// Test string
$str = ':flower :@ Yeah :( :*';
// Pattern
$pattern = '~(' . implode(')|(', $keys) . ')~';
// Replacing
$r = preg_replace_callback(
$pattern,
function($m) {
return EMOJI[$m[0]];
// Wrap in `img` tag
// return '<img src="' . EMOJI[$m[0]] . '">';
},
$str
);
// Output `emoji/0067.gif emoji/0052.gif Yeah emoji/0005.gif emoji/0064.gif`
echo $r;
你真的不需要开关
语句,是吗?你可以做$one=str_replace($match[0])。你已经检查了密钥的存在。一个函数:preg_replace_回调
does$match[0][0]
确实得到了匹配值吗?特殊符号,如(
,,
,
)
必须转义。@我需要该开关来检查在用户文本中检测到的符号
const EMOJI = [
":lol" => "emoji/0046.gif",
":d" => "emoji/0055.gif",
":|" => "emoji/poker.png",
":(" => "emoji/0005.gif",
":cool" => "emoji/0038.gif",
":shy" => "emoji/0001.gif",
":)" => "emoji/0003.gif",
":p" => "emoji/0008.gif",
":h" => "emoji/0031.gif",
":search" => "emoji/0042.gif",
":'(" => "emoji/0057.gif",
":cry" => "emoji/0048.gif",
":think" => "emoji/0052.gif",
":y" => "emoji/0053.gif",
":@" => "emoji/0052.gif",
":xd" => "emoji/0056.gif",
":punch" => "emoji/0063.gif",
":*" => "emoji/0064.gif",
":angle" => "emoji/0065.gif",
":sick" => "emoji/0013.gif",
":flower" => "emoji/0067.gif"
];
$str = ':flower :@ Yeah :( :*';
$r = strtr($str, EMOJI);
// Output `emoji/0067.gif emoji/0052.gif Yeah emoji/0005.gif emoji/0064.gif`
echo $r;