Конвертировать все символы в слове в целое число в PHP - PullRequest
3 голосов
/ 28 марта 2019

Возможно ли преобразовать все символы в слове в число типа

a = 1,  // uppercase too
b = 2,  
c = 3,  
d = 4,  
e = 5,  // and so on til letter 'z'

space = 0 // i'm not sure about if space really is equals to 0

Вот как я думаю.

$string_1 = "abed";   // only string
$string_2 = "abed 5"; // with int

$result_1 = convert_to_int($string_1); // output is 1254
$result_2 = convert_to_int($string_2); // output is 125405

видел некоторый связанный вопрос, но он не отвечает на мой вопрос напрямую, и я не могу понять и решить все сам, поэтому я здесь спрашиваю.

Ответы [ 4 ]

1 голос
/ 28 марта 2019

Чтобы использовать числа, которые вы показали a = 1 и т. Д., А затем просто выполните замену без учета регистра:

$result = str_ireplace(range('a', 'z'), range(1, 26), $string);

Если вы хотите, чтобы значение ASCII затем разделялось на массив, сопоставьте сord значение и присоединение:

$result = implode(array_map(function($v) { return ord($v); }, str_split($string)));
1 голос
/ 28 марта 2019

Создайте массив и вставьте пробел в первый элемент.Затем используйте range() для генерации массива от a до z.Используйте strtolower() для ввода ввода в нижнем регистре (поскольку символы из range(), которые мы генерируем, тоже строчные.

Затем выполните замену на str_replace(), которая принимает массивы в качестве значений. Ключами является значениечто значение будет заменено на.

function convert_to_int($string) {;
    $characters = array_merge([' '], range('a', 'z'));
    return str_replace(array_values($characters), array_keys($characters), $string);
}
1 голос
/ 28 марта 2019

Вот полный код:

$s = 'abcde';
$p = str_split($s);
foreach($p as $c) {
    echo ord($c) - ord('a') + 1;
}
0 голосов
/ 28 марта 2019

Использование регулярных выражений должно быть таким:

$search  = array('/[A-a]/', '/[B-b]/', '/[C-c]/', '/[D-d]/', '/[" "]/');
$replace = array('1', '2', '3', '4', '5');

$final = preg_replace($search, $replace,"abcd ABCD a55");

echo $final;

Output: 1234512345155
...