Как преобразовать строку в маленькие заглавные буквы в PHP?

Я пытаюсь преобразовать строчку, состоящую из «стандартных» прописных и строчных букв в маленькие буквы в PHP. В документации php.net нет информации о маленьких заглавных буквах.

Маленькие столицы, в моем понимании, это:

ᴇʟʟᴏ ᴛʜᴇʀᴇ

(создается с помощью этого сайта: https://fsymbols.com/generators/smallcaps/)

Например, вот маленькая версия t : http://www.fileformat.info/info/unicode/char/1d1b/index.htm

Я долго искал в Интернете и ничего не нашел в PHP. Я знаю, что CSS позволит вам сделать это с помощью

font-variant: small-caps;

Но мне нужно сделать это на стороне сервера для того, что я делаю. Это возможно в PHP?

РЕДАКТИРОВАТЬ: Чтобы завершить свой вопрос, я пытаюсь создать простой текст. Так что в моем случае нет HTML, изображений или CSS.

РЕДАКТИРОВАТЬ 2: На веб-сайте, связанном, функция Javascript используется для преобразования текста

Вот код:

function encool() {
var _0xce74x20 = location[_0x804c[82]],
_0xce74x21;
if (_0xce74x20[_0x804c[84]](_0x804c[83]) == -1 && _0xce74x20[_0x804c[84]](_0x804c[85]) == -1 && _0xce74x20[_0x804c[84]](_0x804c[86]) == -1 && _0xce74x20[_0x804c[84]](_0x804c[87]) == -1 && _0xce74x20[_0x804c[84]](_0x804c[88]) == -1) {
_0xce74x21 = document[_0x804c[91]][_0x804c[90]][_0x804c[89]]
} else {
_0xce74x21 = change(decomposeAString(document[_0x804c[91]][_0x804c[90]][_0x804c[89]]))
};
document[_0x804c[91]][_0x804c[92]][_0x804c[89]] = _0xce74x21
}

Уверен, он использует отображение персонажей. Я посмотрю на это и выложу решение, если найду его.

0

Решение

Таким образом, вы хотите преобразовать текст, содержащий строчные и заглавные буквы, в маленькие заглавные буквы, используя UNICODE.

Для этого вам нужна таблица сопоставления, которая отображает каждого персонажа в кулон с маленькими заглавными буквами в UNICODE. использование mb_convert_encoding() для конвертации в PHP.

Увидеть этот пример из документации PHP о том, как использовать пользовательскую таблицу сопоставления.

2

Другие решения

Сопоставьте каждый символ, а затем переберите свою строку.

<?php
//Initialize the map
$map = array(
"A"=>"ᴀ",
"B"=>"ʙ",
"C"=>"ᴄ",
"D"=>"ᴅ"//etc
);

function convertToSmall($string,$map){
//Our string to return
$return = "";
//You can replace length + the for loop for an explode + foreach
$length = strlen($string);
for($i = 0; $i<$length; $i++){
//set our input character
$input = strtoupper($string[$i]);
//check if its in the map
if(isset($map[$input])){
$input = $map[$input];
}
//write to our output
$return .= $input;

}

return $return;

}

print_r(convertToSmall("aa bc da",$map));

Выход этого:
ᴀᴀ ʙᴄ ᴅᴀ

3v4l ссылка

1

Хорошо, вот решение, которое я придумал, но оно не очень полное, потому что даже если оно соответствует моим потребностям. Мне нужно это, чтобы преобразовать небольшой текст (названия категорий), так что это нормально для меня.

function convertToSmallCaps($string) {
// standar capitals
$caps = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
// small capitals
$smallCaps = array('ᴀ', 'ʙ', 'ᴄ', 'ᴅ', 'ᴇ', 'ꜰ', 'ɢ', 'ʜ', 'ɪ', 'ᴊ', 'ᴋ', 'ʟ', 'ᴍ', 'ɴ', 'ᴏ', 'ᴘ', 'ǫ', 'ʀ', 's', 'ᴛ', 'ᴜ', 'ᴠ', 'ᴡ', 'x', 'ʏ', 'ᴢ');

// remove all chars except [a-z] and - (replacing dashes with spaces)
$sanitized_string = str_replace('-',' ',sanitize_title($string));

// convert to uppercase
$sanitized_string = mb_strtoupper($string);

$length = strlen($sanitized_string);
$output_string='';
for($i = 0; $i<$length; $i++){
$char = $sanitized_string[$i];
// If the letter exsist in small capitals
$letter_position = array_search($char,$caps);
if(is_numeric($letter_position) && isset($smallCaps[$letter_position])) {
// We append it to the ouput string
$output_string.=$smallCaps[$letter_position];

} else {
// or else we append the original char to the output string
$output_string.=$char;
}
}
// return the converted string
return $output_string;
}

Это в основном отображает все символы в строке от заглавных букв до маленьких заглавных букв

Проблемы :

  1. это зависит от WordPress. Я использовал sanitize_title функция из WordPress, которая «слагает» строку (удаляя все символы кроме [a-z] а также -)
  2. Если в вашем тексте много диакритических знаков или он состоит из цифр и нелатинских символов или длиннее имени категории, результат может быть немного странным
  3. некоторые буквы (x или s или q) не являются маленькими заглавными буквами (потому что их нет, я полагаю?), поэтому на некоторых экранах результат может быть запутанным.

Я постараюсь улучшить это в будущем, если мои потребности изменятся

0
По вопросам рекламы [email protected]