file($tmp_name, FILEINFO_MIME_TYPE);
$safe_img_mime = array(
"image/gif",
"image/jpeg",
"image/png",
"image/svg+xml",
"image/webp",
"image/bmp",
"image/x-icon",
"image/tiff"
);
if(in_array($tmp_ext,$safe_img_mime)){
return $tmp_ext;
}else{
return false;
}
}
//ファイル形式チェック(画像かどうか)
function check_mime_video($tmp_name){
$finfo = new finfo();
$tmp_ext = $finfo->file($tmp_name, FILEINFO_MIME_TYPE);
$safe_vid_mime = array(
"video/mpeg",
"video/mp4",
"video/webm",
"video/x-msvideo",
);
if(in_array($tmp_ext,$safe_vid_mime)){
return $tmp_ext;
}else{
return false;
}
}
//ファイル形式チェック(Base64の場合)
function base64_mime($Base64,$userid){
$Base64 = base64_decode($Base64);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_buffer($finfo, $Base64);
$safe_img_mime = [
"image/gif" => 'gif',
"image/jpeg" => 'jpg',
"image/png" => 'png',
"image/svg+xml" => 'svg',
"image/webp" => 'webp',
"image/bmp" => 'bmp',
"image/x-icon" => 'ico',
"image/tiff" => 'tiff'
];
if(isset($safe_img_mime[$mime_type])){
$extension = $safe_img_mime[$mime_type];
$temp_file = tempnam(sys_get_temp_dir(), 'img');
file_put_contents($temp_file, $Base64);
delete_exif($extension, $temp_file);
$newFilename = uniqid() . '-' . $userid . '.' . $extension;
$uploadedPath = '../ueuseimages/' . $newFilename;
$result = copy($temp_file, "../".$uploadedPath);
if($result){
return $uploadedPath;
} else {
return false;
}
} else {
return false;
}
}
//文字装飾・URL変換など
function processMarkdownAndWrapEmptyLines($markdownText){
//\___________________[注意]__________________\
// \____ここの順番を変えるとうまく動かなくなります___\
// \______Markdownうまく動くところを探すべし______\
$markdownText = preg_replace('/\[\[buruburu (.+)\]\]/m', '$1', $markdownText);//ぶるぶる
$markdownText = preg_replace('/(^|[^`])`([^`\n]+)`($|[^`])/m', '$1$2$3', $markdownText);//Inline Code
$markdownText = preg_replace_callback('/^\[\[time (\d+)\]\]/m', function($matches) {
$timestamp = $matches[1];
return '' . date("Y/m/d H:i", htmlentities($timestamp, ENT_QUOTES, 'UTF-8', false)) . '';
}, $markdownText);
//太字&斜体------------------------------------------------------------------------
$markdownText = preg_replace('/\*\*\*(.+)\*\*\*(?=\s)/', '$1', $markdownText);//太字&斜体の全部のせセット
$markdownText = preg_replace('/\*\*\*(.+)\*\*\*/', '$1', $markdownText);//太字&斜体の全部のせセット
$markdownText = preg_replace('/\_\_\_(.+)\_\_\_(?=\s)/', '$1', $markdownText);//太字&斜体の全部のせセット
$markdownText = preg_replace('/\b\_\_\_(.+)\_\_\_\b/', '$1', $markdownText);//太字&斜体の全部のせセット
//太字-----------------------------------------------------------------------------
$markdownText = preg_replace('/\*\*(.+)\*\*(?=\s)/', '$1', $markdownText);//太字
$markdownText = preg_replace('/\b\*\*(.+)\*\*\b/', '$1', $markdownText);//太字
$markdownText = preg_replace('/\_\_(.+)\_\_(?=\s)/', '$1', $markdownText);//太字
$markdownText = preg_replace('/\b\_\_(.+)\_\_\b/', '$1', $markdownText);//太字
//斜体-----------------------------------------------------------------------------
$markdownText = preg_replace('/\*(.+)\*(?=\s)/', '$1', $markdownText);//斜体
$markdownText = preg_replace('/\b\*(.+)\*\b/', '$1', $markdownText);//斜体
$markdownText = preg_replace('/\_(.+)\_(?=\s)/', '$1', $markdownText);//斜体
$markdownText = preg_replace('/\b\_(.+)\_\b/', '$1', $markdownText);//斜体
$markdownText = preg_replace('/\~\~(.+)\~\~/m', '$1', $markdownText);//打ち消し線
$markdownText = preg_replace('/>>> (.+)/m', '$1', $markdownText);//>>> 引用
$markdownText = preg_replace('/\|\|(.+)\|\|/m', '$1', $markdownText);//黒塗り
// タイトル(#、##、###)をHTMLのhタグに変換
$markdownText = preg_replace('/^# (.+)/m', '
・ $1
', $markdownText); // 空行の前に何もない行をHTMLのpタグに変換 $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1$2
', $markdownText); return $markdownText; } //Profile function replaceProfileEmojiImages($postText) { $postText = str_replace(''', '\'', $postText); // プロフィール名で絵文字名(:emoji:)を検出して画像に置き換える $emojiPattern = '/:(\w+):/'; $postTextWithImages = preg_replace_callback($emojiPattern, function($matches) { $emojiName = $matches[1]; //絵文字path取得 $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, )); $emoji_Query = $dbh->prepare("SELECT emojifile, emojiname FROM emoji WHERE emojiname = :emojiname"); $emoji_Query->bindValue(':emojiname', $emojiName); $emoji_Query->execute(); $emoji_row = $emoji_Query->fetch(); if(empty($emoji_row["emojifile"])){ $emoji_path = "img/sysimage/errorimage/emoji_404.png"; }else{ $emoji_path = $emoji_row["emojifile"]; } return "