我想在聊天中进行正则表达式调用,使单个星号之间的文字粗体。
类似的东西:测试! * Hello这是一个PHP脚本 *
谁能帮助我?我已经为聊天室发布了PHP脚本的一些过程,但是正则表达式没有显示出来。
(*)+([^。*?$] +)+(*)是我为此假设的正则表达式。我已经把你所在的部分包括在内了#34;发送"聊天,添加到聊天室并显示。
我在这里做错了什么?我已经坐了几个小时试图解决这个问题。感谢。
case('send'):
$message = htmlentities(strip_tags($_POST['message']));
$nickname = htmlentities(strip_tags($_POST['username']));
$text = "/(\*)+([^.*?$]+)+(\*)";
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
$avc = htmlentities(strip_tags($_POST['avatarC']));
$rbc = htmlentities(strip_tags($_POST['robeC']));
$message = str_replace("\n", "", $message);
if(($message) != "")
{
$temp_msg = "";
if(strlen($message)>75)
{
$temp_msg = wordwrap($message, 75, "<br />");
}
else
{
$temp_msg = $message;
}
/*if(preg_match($reg_exUrl, $avc, $url)) {
$avc = preg_replace($reg_exUrl, '<a href="'.$url[0].'" target="_blank">'.$url[0].'</a>', $avc);
}
$avc = str_replace("\n", " ", $avc);*/
$current_date = date('H:i:s');
//fwrite(fopen($file, 'a'), "<div class=\"message_container message_cell\"><img class=\"img_message\" src=$avc></img><img class=\"img_message\" src=$rbc></img><span class=\"message_text\"><span class=\"message_user\">"<b>. $nickname ."</b> ".$current_date."</span>". $message ."</span></div><br />\n");
fwrite(fopen($file, 'a'), "<div class=\"message_container message_cell\"><img class=\"img_message\" src=$avc></img><img class=\"img_message\" src=$rbc></img><span class=\"message_text\"><span class=\"message_user\"><b>" . $nickname ."</b> [".$current_date."]:</span><br /><br/>". $temp_msg ."</span></div><br />\n");
}
break;
case('addToChat'):
$lines = file($file);
$fristCount = count($lines);
$nickname = $_POST['username'];
fwrite(fopen($file, 'a'), "<div class=\"message_cell message_container\">".$nickname."</div><div>\n");
$text = array();
$lines = file($file);
$log['file'] = $file;
foreach ($lines as $line_num => $line) {
$line = str_replace("\n", "", $line);
if($line != ""){
$text[] = $line;
}
}
答案 0 :(得分:0)
如果您在聊天中的消息将具有此类型的单一模式,则下面的脚本将起作用:
<?php
$message="Test! * Hello This is a PHP script * and this another one";
$pattern = "/(?<=\*).+?(?=\*)/";
preg_match($pattern, $message,$matches);
$temp_msg=$message;
for($i=0;$i<count($matches);$i++){
$temp_msg=str_replace($matches[$i],"<b>".$matches[$i]."</b>",$message);
}
$temp_msg=str_replace("*","",$temp_msg);
echo $temp_msg;
?>