Получить номер буквы php

Получить номер буквы php

Для иллюстрации получения символа строки нам потребуется какая-то строка:

Опять предположим, что нам потребуется 5 символ нашей строки, поступаем как с массивом и выедем определенный символ строки с помощью echo:

Результат получения и вывода определенного символа строки:

Если вы были внимательны, то должны были обратить внимание, на то, что буква выводится 6 по счету. а нам нужна была 5. дело в том, что здесь работает тоже правило, что и с массивом. счет начинается с нуля. и [0] это 1. как бы странно это не звучало! смайлы , возможно, что через несколько лет вы привыкните, а может и нет. смайлы

Получить символ строки кириллица utf-8

В свое время я пересел на кодировку utf-8, почему!? Да просто как-то притомился с вылезанием постоянных крокозябер!
Мы победили крокозябры, но! Проблема в том. что php(редиска, это не такая уж большая проблема. если вы знаете, что делать) не очень любит кириллицу в кодировке utf-8, у нас будет отдельная страница в utf-8 не работает, поэтому не будем растекаться по древу.

Как получить символ строки кириллица utf-8

Для иллюстрации получения символа строки в кириллице, нам потребуется эта самая строка на кириллице.

Если мы проделаем тоже, что было применено в выше идущем пункте.

Как я не пытался различными способами решить именно такой способ получения символа строки, увы я не смог решить этот ребус! Но. разве это когда-то нас останавливало!? У нас есть для этого функция, которые в состоянии получить определенный символ строки. получим. пусть это будет первый элемент строки:

Читайте также:  The semaphore timeout period has expired python

Нам нужно перекодировать строку в windows-1251 применяем функцию substr, третьим значением ставим тот символ строки который хотим получить, и третьим шагом возвращаем кодировку строки.

$string_1 = ‘Привет мир!’;
$stroka = iconv(‘UTF-8′,’windows-1251’,$string_1 ); //Меняем кодировку на windows-1251
$stroka = substr($stroka , 0 , 1); //Получаем требуемый(1) символ строки
$stroka = iconv(‘windows-1251′,’UTF-8’,$stroka ); //Меняем кодировку на windows-1251

Результат получения определенного символа строки:

Получить символ строки кириллица utf-8 -> mb_substr

Вообще, если у вас кириллица, то должна работать функция mb_substr, не то, чтобы, я с утра до вечера пользуюсь функциями с mb, но сколько бы я не использовал их, то всегда с ними что-то не то.

если мы сейчас применим функцию mb_substr:

Для того, чтобы данная функция получила определенный символ строки, то нужно объявить кодировку внутри скрипта.

Результат получения символа строки с помощью mb_substr

Источник

Получить номер буквы php

chr — Generate a single-byte string from a number

Description

Returns a one-character string containing the character specified by interpreting codepoint as an unsigned integer.

This can be used to create a one-character string in a single-byte encoding such as ASCII, ISO-8859, or Windows 1252, by passing the position of a desired character in the encoding’s mapping table. However, note that this function is not aware of any string encoding, and in particular cannot be passed a Unicode code point value to generate a string in a multibyte encoding like UTF-8 or UTF-16.

This function complements ord() .

Parameters

An integer between 0 and 255.

Values outside the valid range (0..255) will be bitwise and’ed with 255, which is equivalent to the following algorithm:

Return Values

A single-character string containing the specified byte.

Changelog

Version Description
7.4.0 The function no longer silently accepts unsupported codepoint s, and casts these to 0 .

Examples

Example #1 chr() example

// Assumes the string will be used as ASCII or an ASCII-compatible encoding

$str = «The string ends in escape: » ;
$str .= chr ( 27 ); /* add an escape character at the end of $str */

/* Often this is more useful */

$str = sprintf ( «The string ends in escape: %c» , 27 );
?>

Example #2 Overflow behavior

The above example will output:

Example #3 Building a UTF-8 string from individual bytes

The above example will output:

See Also

  • sprintf() — Return a formatted string with a format string of %c
  • ord()
  • An » ASCII-table
  • mb_chr()
  • IntlChar::chr()

User Contributed Notes 23 notes

Note that if the number is higher than 256, it will return the number mod 256.
For example :
chr(321)=A because A=65(256)

for ( $i = 128 ; $i $str = chr ( 240 ) . chr ( 159 ) . chr ( 144 ) . chr ( $i );
echo $str ;
>

Another quick and short function to get unicode char by its code.

/**
* Return unicode char by its code
*
* @param int $u
* @return char
*/
function unichr ( $u ) return mb_convert_encoding ( ‘&#’ . intval ( $u ) . ‘;’ , ‘UTF-8’ , ‘HTML-ENTITIES’ );
>
?>

I spent hours looking for a function which would take a numeric HTML entity value and output the appropriate UTF-8 bytes. I found this at another site and only had to modify it slightly; so I don’t take credit for this.

if ( $dec < 128 ) <
$utf = chr ( $dec );
> else if ( $dec < 2048 ) <
$utf = chr ( 192 + (( $dec — ( $dec % 64 )) / 64 ));
$utf .= chr ( 128 + ( $dec % 64 ));
> else <
$utf = chr ( 224 + (( $dec — ( $dec % 4096 )) / 4096 ));
$utf .= chr ( 128 + ((( $dec % 4096 ) — ( $dec % 64 )) / 64 ));
$utf .= chr ( 128 + ( $dec % 64 ));
>
return $utf ;
> ?>

So for example:

Want terminal colors in command line php scripts?

This should take care of that.

$_colors = array(
‘LIGHT_RED’ => «[1;31m»,
‘LIGHT_GREEN’ => «[1;32m»,
‘YELLOW’ => «[1;33m»,
‘LIGHT_BLUE’ => «[1;34m»,
‘MAGENTA’ => «[1;35m»,
‘LIGHT_CYAN’ => «[1;36m»,
‘WHITE’ => «[1;37m»,
‘NORMAL’ => «[0m»,
‘BLACK’ => «[0;30m»,
‘RED’ => «[0;31m»,
‘GREEN’ => «[0;32m»,
‘BROWN’ => «[0;33m»,
‘BLUE’ => «[0;34m»,
‘CYAN’ => «[0;36m»,
‘BOLD’ => «[1m»,
‘UNDERSCORE’ => «[4m»,
‘REVERSE’ => «[7m»,

function termcolored($text, $color=»NORMAL», $back=1) <
global $_colors;
$out = $_colors[«$color»];
if($out == «») < $out = "[0m"; >
if($back) <
return chr(27).»$out$text».chr(27).chr(27).»[0m».chr(27);
>else <
echo chr(27).»$out$text».chr(27).chr(27).»[0m».chr(27);
>//fi
>// end function

echo termcolored(«test\n», «BLUE»);
?>

Here is a sample of encoding and decoding using «chr» and «ord».
function Encode ( $txtData , $Level ) for ( $j = 0 ; $j < $Level ; $j ++)$tmpStr = '' ;
for ( $i = 0 ; $i < strlen ( $txtData ); $i ++)
$tmpStr .= ord ( substr ( strtoupper ( $txtData ), $i , 1 ));
$txtData = $tmpStr ;
>
return ( strlen ( $Level )). $Level . $txtData ;
>

function Decode ( $txtData ) $intLevel = substr ( $txtData , 1 , substr ( $txtData , 0 , 1 ));
$startStr = substr ( $txtData , substr ( $txtData , 0 , 1 )+ 1 , strlen ( $txtData ));
for ( $j = 0 ; $j < $intLevel ; $j ++)for ( $i = 0 ; $i < strlen ( $startStr ); $i += 2 )
$tmpStr .= chr ( intval ( substr ( $startStr , $i , 2 )));
$startStr = $tmpStr ;

$tmpStr = «» ;
>
return $startStr ;
>

echo Encode ( ‘123’ , 4 ). ‘
‘ ;
echo Decode ( Encode ( ‘123’ , 5 ));
?>

Secure password generator with a variable maximum amount of symbols.

function passwdGen ( $minLength = 8 , $maxLength = 12 , $maxSymbols = 2 )
$symbolCount = 0 ;

srand ((double) microtime () * 1000003 );

$passwd = sprintf ( ‘%s%c’ , isset( $passwd ) ? $passwd : NULL , $char );
>

In addition to replacing Microsoft Windows smart quotes, as sgaston demonstrated on 2006-02-13, I replace all other Microsoft Windows characters using suggestions[1] published by character code specialist[2] Jukka Korpela.

$str = str_replace ( chr ( 130 ), ‘,’ , $str ); // baseline single quote
$str = str_replace ( chr ( 131 ), ‘NLG’ , $str ); // florin
$str = str_replace ( chr ( 132 ), ‘»‘ , $str ); // baseline double quote
$str = str_replace ( chr ( 133 ), ‘. ‘ , $str ); // ellipsis
$str = str_replace ( chr ( 134 ), ‘**’ , $str ); // dagger (a second footnote)
$str = str_replace ( chr ( 135 ), ‘***’ , $str ); // double dagger (a third footnote)
$str = str_replace ( chr ( 136 ), ‘^’ , $str ); // circumflex accent
$str = str_replace ( chr ( 137 ), ‘o/oo’ , $str ); // permile
$str = str_replace ( chr ( 138 ), ‘Sh’ , $str ); // S Hacek
$str = str_replace ( chr ( 139 ), ‘ $str = str_replace ( chr ( 140 ), ‘OE’ , $str ); // OE ligature
$str = str_replace ( chr ( 145 ), «‘» , $str ); // left single quote
$str = str_replace ( chr ( 146 ), «‘» , $str ); // right single quote
$str = str_replace ( chr ( 147 ), ‘»‘ , $str ); // left double quote
$str = str_replace ( chr ( 148 ), ‘»‘ , $str ); // right double quote
$str = str_replace ( chr ( 149 ), ‘-‘ , $str ); // bullet
$str = str_replace ( chr ( 150 ), ‘-‘ , $str ); // endash
$str = str_replace ( chr ( 151 ), ‘—‘ , $str ); // emdash
$str = str_replace ( chr ( 152 ), ‘~’ , $str ); // tilde accent
$str = str_replace ( chr ( 153 ), ‘(TM)’ , $str ); // trademark ligature
$str = str_replace ( chr ( 154 ), ‘sh’ , $str ); // s Hacek
$str = str_replace ( chr ( 155 ), ‘>’ , $str ); // right single guillemet
$str = str_replace ( chr ( 156 ), ‘oe’ , $str ); // oe ligature
$str = str_replace ( chr ( 159 ), ‘Y’ , $str ); // Y Dieresis
?>

[1] On the use of some MS Windows characters in HTML
http://www.cs.tut.fi/~jkorpela/www/windows-chars.html

Here is a function that’s help me find what chr(number) outputs what character quicker than typing out 256 echo tags.

function listChr () <
for ( $i = 0 ; $i < 256 ; ++ $i ) <
static $genNum ;
$genNum ++;
echo «chr( $genNum ) will output ‘» ;
echo ( chr ( $genNum ));
echo «‘< br>\n» ;
>
>
listChr ();
?>

Another helpful chr is #9, being a tab. Quite using when making error logs.

$tab = (chr(9));
echo «

errordatetime

«;

// rivencodec 1.0
// encode riverse ascii 1 simple function can encode/decode
// can use it for secure source with speed encode text

function rivencodec ( $ch , $a = 0 ) while((@ $b = $ch [ $a ++])) < $ch [ $a - 1 ] = chr ( 255 - ord ( $b )); >
return $ch ;
>

$zz = rivencodec ( «abcdefghijklmn» );
echo ‘encode: ‘ , $zz , ‘
‘ , PHP_EOL ;

$yy = rivencodec ( $zz );
echo ‘decode: ‘ , $yy , ‘
‘ , PHP_EOL ;

to remove the ASCII control characters (except «line feed» and «tab») :

Note that chr(10) is a ‘line feed’ and chr(13) is a ‘carriage return’ and they are not the same thing! I found this out while attempting to parse text from forms and text files for inclusion as HTML by replacing all the carriage returns with
‘s only to find after many head-scratchings that I should have been looking for line feeds. If anyone can shed some light on what the difference is, please do.


If you’re planning on saving text from a form into a database for later display, you’ll need to apply the following function so that it gets saved with the proper HTML tags.

$text = str_replace ( chr ( 10 ), «» , $text );
?>

When you want to plug it back into that form for editing you need to convert it back.

$text = str_replace ( «» , chr ( 10 ), $text )
?>

Hope this saves somebody some trouble. 🙂

Simple password generation function using sprintf and the %c type specifier; which is the same as chr().

function genPass($len = 8) for ($i=0;$i <=$len;$i++) $passwd = sprintf('%s%c', isset($passwd) ? $passwd : NULL, rand(48, 122));
>
return $passwd;
>

argument is automatically converted to integer, so chr(’65’) and chr(65) would both output the letter A

When having to deal with parsing an IIS4 or IIS5 metabase dump I wrote a simple function for converting those MS hexidecimal values into their ascii counter parts. Hopefully someone will find use for it.

function hex_decode ( $string ) <
for ( $i = 0 ; $i < strlen ( $string ); $i ) <
$decoded .= chr ( hexdec ( substr ( $string , $i , 2 )));
$i = (float)( $i )+ 2 ;
>
return $decoded ;
>
?>

%c is defined as: «Print the character belonging to the ascii code given»

chr() just gives a string, so you need to use %s, even if the string consists of only one character. This is consistent with other languages.
—Jeroen@php.net]

Learn from my mistake:
Do not expect this to work!

$c_question = chr ( 63 );
$v_out = sprintf ( » //. more stuff being sprintf’d into v_out here .
$v_out = sprintf ( «%s%c>\n» , $v_out , $c_question );
$v_fp = fopen ( «foofile» , «w» );
if ( $v_fp )
<
fwrite ( $v_fp , $v_out , strlen ( $v_out ));
fclose ( $v_fp );
>
?>

When I did this, foofile contained .
I spun my wheels quite awhile looking at fputs, fwrite to verify I was calling those functions correctly.
My mistake was using $c_question = chr(63) instead of
$c_question = 63 (correct). Then everything worked fine.

string mb_chr ( int $cp [, string $encoding ] )
Parameter List:
cp — character code (in decimal notation)
encoding — encoding (UTF-8, ASCII and so on)

We get the letter ‘Ж’ from the encoding UTF-8:

$sim = mb_chr(0x0416, ‘UTF-8’);
echo $sim; // Ж

Get the character ‘>’ from the encoding ASCII:

$sim = mb_chr(125, ‘ASCII’);
echo $sim ; // >

Источник

Оцените статью