PHP funkcia na konverziu reťazca na veľké písmená. Previesť prvé písmená na veľké (veľké) - PHP

  • 03.11.2019

Skonvertuje znaky reťazca na malé písmená.

Syntax:

Stringstrtolower(stringstr);

Skonvertuje reťazec na malé písmená. Vráti výsledok prekladu.

Treba si uvedomiť, že ak je miestne nastavenie nesprávne, funkcia bude pri práci s azbukou produkovať mierne povedané zvláštne výsledky.

$str = "Ahoj Svet"; $str = strtolower($str); echo $str; // tlač ahoj svet

strtoupper

Skonvertuje daný reťazec na veľké písmená.

Syntax:

String strtoupper(string str);

Skonvertuje reťazec na veľké písmená. Vráti výsledok transformácie. Táto funkcia funguje dobre s anglickými písmenami, ale s ruskými písmenami to môže byť zvláštne.

$str = "Ahoj svet"; $str = strtoupper($str); echo $str; // tlač AHOJ SVET

ucfirst

Skonvertuje prvý znak reťazca na veľké písmená.

Syntax:

String ucfirst(string str);

Vráti reťazec, ktorého prvý znak je veľký.

$str = "ahoj svet"; $str = ucfirst($str); echo $str; // tlač Ahoj svet

ucwords

Skonvertuje prvý znak každého slova v reťazci na veľké písmená.

Syntax:

String ucwords(string str);

Vráti reťazec s prvým znakom každého slova v reťazci veľkým písmenom.

Slovo tu znamená časť riadku, pred ktorou je znak medzery: medzera, nový riadok, posun strany, návrat vozíka, horizontálne a vertikálne tabulátory.

Znaky cyriliky sa nemusia správne previesť.

$str = "ahoj svet"; $str = ucfirst($str); echo $str; // tlač Ahoj svet

V PHP sa v názvoch premenných a konštánt rozlišujú veľké a malé písmená, ale názvy funkcií nie.

Pokiaľ viem, PHP je jediný jazyk, kde sa to deje. Všetky ostatné jazyky, ktoré som použil, buď plne rozlišujú malé a veľké písmená, alebo úplne nerozlišujú veľké a malé písmená.

Prečo PHP čiastočne odkazuje na citlivý?

Upozorňujem, že sa nepýtam aký druh mená rozlišujú veľké a malé písmená, ale prečo .

Rozlišovať malé a veľké písmená

  • premenné
  • konštanty
  • kľúče poľa
  • vlastnosti triedy
  • triedne konštanty

Nerozlišujú sa malé a veľké písmená(ako je definované používateľom a PHP)

  • funkcie
  • triednych konštruktérov
  • triedne metódy
  • kľúčové slová a konštrukcie (if, else, null, foreach, echo atď.)

základy

Premenné v PHP sú reprezentované znakom dolára, za ktorým nasleduje názov premennej. V názve premennej sa rozlišujú malé a veľké písmená.

Názvy premenných sa riadia rovnakými pravidlami ako ostatné štítky v PHP. Platný názov premennej začína písmenom alebo podčiarkovníkom, za ktorým nasleduje ľubovoľný počet písmen, číslic alebo podčiarkovníkov. Ako regulárny výraz je vyjadrený takto: "*"

  1. Používateľská príručka pre používateľov
  2. Prečo funkcie a metódy v PHP nerozlišujú veľké a malé písmená?
  3. Rozlišujú funkcie PHP veľké a malé písmená?
  4. Rozlišujú sa v kľúčových slovách PHP veľké a malé písmená?
  5. Rozlišujú sa v názvoch funkcií PHP malé a veľké písmená alebo nie?
  6. Zdroj citlivosti PHP

delikátny prípad

premenné, konštanty, kľúče poľa, vlastnosti triedy, konštanty triedy

Nerozlišujú sa malé a veľké písmená

funkcie, konštruktory tried, metódy tried, kľúčové slová a konštrukcie (if, else, null, foreach, echo atď.),

Pre názvy súborov:

Všimnite si, že rozlišovanie malých a veľkých písmen závisí aj od vášho prostredia.

Keď niečo vyvíjate na svojom WAMP alebo XAMPP, nerozlišujú sa malé a veľké písmená, keď sa presuniete na server Linux, zobrazí sa chyba.

Prečo je PHP čiastočne klasifikované ako citlivé?

Môžem len predpokladať, že je to spôsobené veľmi skorými verziami, možno PHP/FI 2.0. V príručke sa výslovne uvádza:

Uvedomte si, že názvy funkcií PHP/FI nerozlišujú veľké a malé písmená.

Väčšina používateľských údajov, ako sú parametre GET a POST, bola vždy registrovaná ako globálne premenné. Zaobchádzanie s týmito otázkami ako s nerozlišovaním veľkých a malých písmen by pravdepodobne spôsobilo problémy, čo je pravdepodobne dôvod, prečo sa všetky premenné považovali za citlivé.

Z toho, čo môžem povedať, to boli jediné typy id v PHP/FI 2.0. Všetky ostatné boli zavedené neskôr, zjavne napodobňujúce názvy funkcií bez rozlišovania malých a veľkých písmen.

Konštanty, ktoré sú špeciálne, boli zavedené až od PHP 4 (príručka PHP 3 spomína „konštanty“, ale tie sa v súčasnosti nazývajú „literály“). Z nejakého záhadného dôvodu (pravdepodobne sa nepodarilo nájsť konsenzus) bolo prijaté rozhodnutie povoliť, aby trvalé identifikátory boli buď citlivé na malé a veľké písmená, alebo na odmietnutie vývojára. Je zaujímavé poznamenať, že zatiaľ čo define() štandardne používa konštanty rozlišujúce veľké a malé písmená, zodpovedajúce náprotivky C (REGISTER_*_CONSTANT) štandardne nerozlišujú malé a veľké písmená.

PHP je dobré s rôznymi funkciami v rodnom jazyku. V niektorých prípadoch je však potrebné doplniť chýbajúcu funkcionalitu. Je to viditeľné najmä pri práci s funkciami konverzie reťazcov a rôznych kódovaní.

Napríklad ucfirst je funkcia, ktorá prevádza prvý znak reťazca na veľké písmená. Zdalo by sa, že by nemali byť žiadne problémy, no pri práci s azbukou k takémuto prevodu nedochádza. Platí to aj pre funkciu ucwords – prevádza prvý znak každého slova v reťazci na veľké písmená.

Neexistujú žiadne problémy so znakmi anglickej abecedy:

"; //konvertuje prvý znak každého slova v reťazci na veľké písmená echo ucwords($str); ?>

testovací reťazec testovací reťazec

Ale s azbukou sú problémy:

"; //konvertuje prvý znak každého slova v reťazci na veľké písmená echo ucwords($str); ?>

testovací reťazec testovací reťazec

Pre PHP sú typické prípady, keď funguje „zle“ alebo nepracuje s azbukou vôbec. Niektoré funkcie s predponou mb riešia problémy s azbukou. Napríklad mb_strtolower – reťazec s malými písmenami. Na rozdiel od strtolower() sa to, či je znakom písmeno, určuje na základe vlastností znaku Unicode.

Aby sme problém vyriešili, definujme funkciu mb_ucfirst(string str [, kódovanie reťazca]), ktorá bude spracovávať znaky Unicode.

Ak chcete previesť prvý znak každého slova v reťazci na veľké písmeno, stačí použiť mb_convert_case v režime MB_CASE_TITLE.

pred 11 rokmi

Všimnite si, že mb_strtolower() je veľmi POMALÝ, ak máte pripojenie k databáze, možno ho budete chcieť použiť na konverziu reťazcov na malé písmená. Možné sú dokonca aj kódovania latin1/9 (iso-8859-1/15) a iné.

Pozrite sa na môj jednoduchý benchmark:

$text = "Lorem ipßüm dolor SSIT amet, cönßectetüer ädipißcing elít. Sed ligülä. Präeßent jüßtö tellüß, Gravida Eu, tempüß ä, mättiß Non, Orci. Nám qüiß Lorem. Nam äliqüet elít ßed elít. Phäßellüß venenätiß jüßtö Eget enim. Donec Nissle. PROIN mättiß venenätiß jüßtö Sed Podeľte Porta Orci hrubý elít Nissle, cönvälliß qüiß, tincidunt AT, vehicule äccümßän, Odio Sed möleßtie Etiam mölliß feügiät elít Veßtibülüm ante ipßüm primiß v fäücibüß Orci lüctüß et ültriceß pößüere cübiliä Cura; ..... Mäecenäß non nulla ".;

// mb_strtolower()
$timeMB = microtime(true);

For($i = 0 ; $i< 30000 ; $i ++)
$lower = mb_strtolower(" $text /no-cache- $i " );

$timeMB = microtime (true ) - $timeMB ;

// MySQL nižšia()
$timeSQL = microtime(true);

mysql_query("názvy skupín latin1");
for($i = 0 ; $i< 30000 ; $i ++) {
$r = mysql_fetch_row (mysql_query ("vyberte nižšiu(" $text /bez vyrovnávacej pamäte- $i ")" ));
$nižšie = $r[ 0 ];
}

$timeSQL = microtime(true ) - $timeSQL ;

echo "mb: ". sprintf("%.5f" , $timeMB ). "sek.
" ;
echo "sql:". sprintf("%.5f" , $timeSQL ). "sek.
" ;

// Výsledok na mojom notebooku:
// mb: 11,50642 sek.
// sql: 5,44143 sek.

?>

pred 7 rokmi

Upozorňujeme, že pri použití s ​​UTF-8 mb_strtolower skonvertuje iba veľké písmená na malé písmená, ktoré sú označené vlastnosťou Unicode "Veľké písmeno" ("Lu"). Existujú však aj písmená, ako napríklad „číslice písmen“ (vlastnosť Unicode „Nl“), ktoré majú aj varianty malých a veľkých písmen. Tieto znaky nebudú konvertované na mb_strtolower!

Príklad:
Rímske písmená Ⅰ, Ⅱ, Ⅲ, ..., Ⅿ (body kódu UTF-8 8544 až 8559) existujú aj vo svojich príslušných variantoch malých písmen ⅰ, ⅱ, ⅲ, ..., ⅿ (body kódu UTF-8 8560 cez 8575) a podľa môjho názoru by ich mal previesť aj mb_strtolower, ale nie sú!

Veľké internetové spoločnosti (ako Google) zodpovedajú obom variantom ako sémanticky rovnocenné (pretože reprezentácie sa líšia iba veľkosťou písmen).

Keďže som na internete nenašiel žiadne správne riešenie, ako namapovať všetky reťazce UTF8 na ich malé náprotivky v PHP, ponúkam nasledujúcu pevne zakódovanú rozšírenú funkciu mb_strtolower pre reťazce UTF-8:

Funkcia obalí existujúcu funkciu mb_strtolower() a navyše nahradí veľké písmená UTF8, pre ktoré existuje zastúpenie malých písmen. Keďže na internete neexistuje žiadna správna tabuľka veľkých a malých písmen Unicode, ktorú som dokázal nájsť, skontroloval som prvý milión znakov UTF8 v porovnaní s nástrojmi Google-search a -KeywordTool a identifikoval som nasledujúcich 78 znakov ako veľké písmená, nie je nahradený mb_strtolower, ale má náprotivok UTF8 s malými písmenami.

//čísla v komentároch v riadku zobrazujú znaky" Unicode code-points (CP).
funkcia strtolower_utf8_extended ($utf8_string)
{
$additional_replacements = pole
("Dž" => "dž" // 453 -> 454
, "Lj" => "lj" // 456 -> 457
, "Nj" => "nj" // 459 -> 460
, "Dz" => "dz" // 498 -> 499
, "Ϸ" => "ϸ" // 1015 -> 1016
, "Ϲ" => "ϲ" // 1017 -> 1010
, "Ϻ" => "ϻ" // 1018 -> 1019
, "ᾈ" => "ᾀ" // 8072 -> 8064
, "ᾉ" => "ᾁ" // 8073 -> 8065
, "ᾊ" => "ᾂ" // 8074 -> 8066
, "ᾋ" => "ᾃ" // 8075 -> 8067
, "ᾌ" => "ᾄ" // 8076 -> 8068
, "ᾍ" => "ᾅ" // 8077 -> 8069
, "ᾎ" => "ᾆ" // 8078 -> 8070
, "ᾏ" => "ᾇ" // 8079 -> 8071
, "ᾘ" => "ᾐ" // 8088 -> 8080
, "ᾙ" => "ᾑ" // 8089 -> 8081
, "ᾚ" => "ᾒ" // 8090 -> 8082
, "ᾛ" => "ᾓ" // 8091 -> 8083
, "ᾜ" => "ᾔ" // 8092 -> 8084
, "ᾝ" => "ᾕ" // 8093 -> 8085
, "ᾞ" => "ᾖ" // 8094 -> 8086
, "ᾟ" => "ᾗ" // 8095 -> 8087
, "ᾨ" => "ᾠ" // 8104 -> 8096
, "ᾩ" => "ᾡ" // 8105 -> 8097
, "ᾪ" => "ᾢ" // 8106 -> 8098
, "ᾫ" => "ᾣ" // 8107 -> 8099
, "ᾬ" => "ᾤ" // 8108 -> 8100
, "ᾭ" => "ᾥ" // 8109 -> 8101
, "ᾮ" => "ᾦ" // 8110 -> 8102
, "ᾯ" => "ᾧ" // 8111 -> 8103
, "ᾼ" => "ᾳ" // 8124 -> 8115
, "ῌ" => "ῃ" // 8140 -> 8131
, "ῼ" => "ῳ" // 8188 -> 8179
, "Ⅰ" => "ⅰ" // 8544 -> 8560
, "Ⅱ" => "ⅱ" // 8545 -> 8561
, "Ⅲ" => "ⅲ" // 8546 -> 8562
, "Ⅳ" => "ⅳ" // 8547 -> 8563
, "Ⅴ" => "ⅴ" // 8548 -> 8564
, "Ⅵ" => "ⅵ" // 8549 -> 8565
, "Ⅶ" => "ⅶ" // 8550 -> 8566
, "Ⅷ" => "ⅷ" // 8551 -> 8567
, "Ⅸ" => "ⅸ" // 8552 -> 8568
, "Ⅹ" => "ⅹ" // 8553 -> 8569
, "Ⅺ" => "ⅺ" // 8554 -> 8570
, "Ⅻ" => "ⅻ" // 8555 -> 8571
, "Ⅼ" => "ⅼ" // 8556 -> 8572
, "Ⅽ" => "ⅽ" // 8557 -> 8573
, "Ⅾ" => "ⅾ" // 8558 -> 8574
, "Ⅿ" => "ⅿ" // 8559 -> 8575
, "Ⓐ" => "ⓐ" // 9398 -> 9424
, "Ⓑ" => "ⓑ" // 9399 -> 9425
, "Ⓒ" => "ⓒ" // 9400 -> 9426
, "Ⓓ" => "ⓓ" // 9401 -> 9427
, "Ⓔ" => "ⓔ" // 9402 -> 9428
, "Ⓕ" => "ⓕ" // 9403 -> 9429
, "Ⓖ" => "ⓖ" // 9404 -> 9430
, "Ⓗ" => "ⓗ" // 9405 -> 9431
, "Ⓘ" => "ⓘ" // 9406 -> 9432
, "Ⓙ" => "ⓙ" // 9407 -> 9433
, "Ⓚ" => "ⓚ" // 9408 -> 9434
, "Ⓛ" => "ⓛ" // 9409 -> 9435
, "Ⓜ" => "ⓜ" // 9410 -> 9436
, "Ⓝ" => "ⓝ" // 9411 -> 9437
, "Ⓞ" => "ⓞ" // 9412 -> 9438
, "Ⓟ" => "ⓟ" // 9413 -> 9439
, "Ⓠ" => "ⓠ" // 9414 -> 9440
, "Ⓡ" => "ⓡ" // 9415 -> 9441
, "Ⓢ" => "ⓢ" // 9416 -> 9442
, "Ⓣ" => "ⓣ" // 9417 -> 9443
, "Ⓤ" => "ⓤ" // 9418 -> 9444
, "Ⓥ" => "ⓥ" // 9419 -> 9445
, "Ⓦ" => "ⓦ" // 9420 -> 9446
, "Ⓧ" => "ⓧ" // 9421 -> 9447
, "Ⓨ" => "ⓨ" // 9422 -> 9448
, "Ⓩ" => "ⓩ" // 9423 -> 9449
, "𐐦" => "𐑎" // 66598 -> 66638
, "𐐧" => "𐑏" // 66599 -> 66639
);

$utf8_string = mb_strtolower($utf8_string , "UTF-8" );

$utf8_string = strtr ($utf8_string , $additional_replacements );

Return $utf8_string ;
) //strtolower_utf8_extended()

Funkcie zmeny prípadu

strtolower

Skonvertuje znaky reťazca na malé písmená.

Syntax:

string strtolower(string str);

Skonvertuje reťazec na malé písmená. Vráti výsledok prekladu.

Treba si uvedomiť, že ak je miestne nastavenie nesprávne, funkcia bude pri práci s azbukou produkovať mierne povedané zvláštne výsledky.

$str = "Ahoj Svet";

$str = strtolower($str);

// tlač ahoj svet

strtoupper

Skonvertuje daný reťazec na veľké písmená.

Syntax:

stringstrtoupper(stringstr);

Skonvertuje reťazec na veľké písmená. Vráti výsledok transformácie. Táto funkcia funguje dobre s anglickými písmenami, ale s ruskými písmenami to môže byť zvláštne.

$str = "Ahoj svet";

$str = strtoupper($str);

// tlač AHOJ SVET

Skonvertuje prvý znak reťazca na veľké písmená.

Syntax:

string ucfirst(string reťazec);

Vráti reťazec, ktorého prvý znak je veľký.

$str = "ahoj svet";

$str = ucfirst($str);

// tlač Ahoj svet

Skonvertuje prvý znak každého slova v reťazci na veľké písmená.

Syntax:

string ucwords(string str);

Vráti reťazec s prvým znakom každého slova v reťazci veľkým písmenom.

Slovo tu znamená časť riadku, pred ktorou je znak medzery: medzera, nový riadok, posun strany, návrat vozíka, horizontálne a vertikálne tabulátory.

Znaky cyriliky sa nemusia správne previesť.

$str = "ahoj svet";

$str = ucfirst($str);

// tlač Ahoj svet

Z knihy Linux Kernel Module Developer Encyclopedia autor Pomerants Ori

Z knihy Ľudský faktor v programovaní autora Constantine Larry L

54 Agents of Change Jedna ryba tým, že urobí správny pohyb v správnom momente, môže zmeniť kurz celej húfy. V tíme vývoja softvéru často závisí úspech zavedenia nového nástroja alebo vylepšenej metódy tvorby verzií

Z knihy Efektívne používanie STL od Meyersa Scotta

Tip 35: Implementujte jednoduché porovnávanie reťazcov bez rozlišovania malých a veľkých písmen pomocou nezhody alebo lexicographical_compare Jedna z otázok, ktorú si často kladú nováčikovia v STL, je „Ako STL porovnáva reťazce bez rozlišovania malých a veľkých písmen?“ Jednoduchosť tejto otázky je klamlivá. Porovnania

Z knihy Základy objektovo-orientovaného programovania od Meyera Bertranda

Porovnanie strún bez ohľadu na veľkosť písmen Matt Ostern

Z knihy TCP/IP Architecture, Protocols, Implementation (vrátane IP verzie 6 a IP Security) autorka Faith Sidney M

Z knihy XSLT Technology autora Valikov Alexej Nikolajevič

Change and Consistency Vývoj softvéru, ako už bolo spomenuté, je z veľkej časti o opakovaní. Aby sme pochopili technickú náročnosť opätovného použitia, musíme pochopiť povahu opakovania. Napriek tomu, že programátori väčšinou opakujú to isté a

Z knihy Vývoj aplikácií v prostredí Linuxu. Druhé vydanie autora Johnson Michael K.

11.8.2 Presuny a zmeny Čo sa stane, ak používateľ presunie počítač na iné miesto pripojením k inej sieti alebo podsieti? Počas zavádzania počítač používajúci DHCP automaticky zmení svoju IP adresu a masku podsiete a v prípade potreby -

Z knihy C++. Zbierka receptov autora Diggins Christopher

22.10.3 Zmeny v DNS Nový typ zdrojového záznamu, AAAA, mapuje názvy domén na adresy IP verzie 6. Príkladom takéhoto záznamu je: MICKEY IN AAAA 4321:0:1:2:3:4:567:89AB Musí byť poskytnuté aj spätné vyhľadávanie. Ak chcete previesť adresy na názvy pre IPv6, budete musieť pridať nové domény. Spätné vyhľadávanie

Z knihy Linux and UNIX: shell programming. Príručka pre vývojárov. autor Tainsley David

Z knihy Kancelársky počítač pre ženy autora Pasternak Evgenia

Zmeny v XPath 2.0 Vývojová verzia jazyka XPath v dôsledku integrácie s XQuery samozrejme prejde veľkými zmenami. Nová špecifikácia je už rozdelená na dva dokumenty: dokument popisujúci dátový model a dokument popisujúci funkcie a operátory. Preto na

Z knihy HTML, XHTML a CSS 100% autor Quint Igor

11.7.2. Zmeny kódu Akonáhle parseCommand() správne odráža dátové štruktúry, spustenie príkazov v správnom poradí sa stane pomerne jednoduchým s dostatočnou pozornosťou venovanou detailom. Najprv do parseCommand() pridáme slučku na spustenie podradených procesov,

Z knihy autora

4.13. Vykonanie problému porovnávania reťazcov bez rozlišovania malých a veľkých písmen Máte dva reťazce a chcete vedieť, či nie sú rovnaké, bez ohľadu na veľkosť písmen. Napríklad „mačka“ sa nerovná „pes“, ale „Mačka“ sa musí rovnať „mačka“, „MAČKA“ alebo „mačka“. RiešeniePorovnajte reťazce pomocou štandardu

Z knihy autora

4.14. Vykonanie vyhľadávania reťazcov bez ohľadu na veľkosť písmen , ako aj vlastné funkcie porovnávania postáv, podobne ako

Z knihy autora

8.1.8. Ignorovanie malých a veľkých písmen V predvolenom nastavení grep rozlišuje malé a veľké písmená. Ak chcete vyhľadávať bez ohľadu na veľkosť písmen, použite voľbu -i. V súbore data.f sa označenie mesiaca september vyskytuje veľkými aj malými písmenami. Preto pre

Z knihy autora

Zmeny Ak je v dokumente veľa zmien, je vhodné použiť túto skupinu tlačidiel, napríklad vidíte opravu a súhlasíte s ňou. Umiestnite do nej kurzor a kliknite na tlačidlo Prijať. Korekčné zvýraznenie zmizne a plynule zapadne do vášho textu

Z knihy autora

Priradenie názvov značiek a atribútov rozlišuje malé a veľké písmená V dokumentoch HTML sa v názvoch značiek a atribútov nerozlišujú veľké a malé písmená, takže napr.

,
alebo
znamená rovnakú značku tabuľky. V XHTML sú to však odlišné značky. To isté platí pre mená.




Webová stránka pomocníka pre počítače

© Copyright 2022,
rzdoro.ru – stránka počítačovej pomoci

  • Kategórie
  • železo
  • Windows 10
  • Skenovanie
  • Windows 7
  • železo
  • Windows 10
  • Skenovanie
  • Windows 7