Pretvaranje prvih slova u velika slova (velika slova) - PHP. Php funkcije za promjenu slova pretvaraju niz u funkciju velikih slova

U PHP varijable i imena konstanti su osjetljiva na velika i mala slova, ali imena funkcija nisu.

Koliko ja znam, PHP je jedini jezik koji to radi. Svi drugi jezici koje sam koristio su ili potpuno osjetljivi na velika i mala slova ili potpuno neosjetljivi.

Zašto PHP djelomično odnosi se na osjetljive?

Imajte na umu da ne pitam koji imena razlikuju velika i mala slova, ali Zašto .

Osjetljivo na velika i mala slova

  • varijable
  • konstante
  • niz ključeva
  • svojstva klase
  • konstante klase

Neosjetljivo na velika i mala slova(korisnički definirano i PHP)

  • funkcije
  • konstruktori klasa
  • razredne metode
  • ključne riječi i konstrukcije (if, else, null, foreach, echo, itd.)

osnove

Varijable u PHP-u predstavljene su znakom dolara iza kojeg slijedi naziv varijable. Naziv varijable razlikuje velika i mala slova.

Imena varijabli slijede ista pravila kao i druge oznake u PHP-u. Valjano ime varijable počinje slovom ili podvlakom, nakon čega slijedi bilo koji broj slova, brojeva ili podvlaka. Kao regularni izraz izražava se na sljedeći način: "*"

  1. Korisnički priručnik za korisnike
  2. Zašto funkcije i metode u PHP-u ne razlikuju velika i mala slova?
  3. Jesu li PHP funkcije osjetljive na velika i mala slova?
  4. Jesu li PHP ključne riječi osjetljive na velika i mala slova?
  5. Jesu li imena PHP funkcije osjetljivo na velika i mala slova ili ne?
  6. Izvor PHP osjetljivosti

Delikatan slučaj

varijable, konstante, ključevi polja, svojstva klase, konstante klase

Neosjetljivo na velika i mala slova

funkcije, konstruktori klasa, metode klasa, ključne riječi i konstrukcije (if, else, null, foreach, echo, itd.),

Za nazive datoteka:

Imajte na umu da osjetljivost na velika i mala slova također ovisi o vašem okruženju.

Kada razvijete nešto na svom WAMP-u ili XAMPP-u, bit će neosjetljivo na velika i mala slova kada promijenite na Linux poslužitelj izbacit će pogrešku.

Zašto je PHP djelomično osjetljiv?

Mogu samo pretpostaviti da je to zbog vrlo ranije verzije možda s PHP/FI 2.0. U priručniku jasno stoji:

Imajte na umu da nazivi PHP/FI funkcija ne razlikuju velika i mala slova.

Većina korisničkih podataka kao što su GET parametri i POST uvijek su registrirani kao globalne varijable. Tretiranje ovih pitanja kao pitanja koja ne razlikuju velika i mala slova vjerojatno bi izazvalo probleme, što je vjerojatno razlog zašto su sve varijable tretirane kao osjetljive na velika i mala slova.

Koliko mogu reći, to su bile jedine vrste identifikatora u PHP/FI 2.0. Svi ostali uvedeni su kasnije, očito oponašajući nazive funkcija koji nisu osjetljivi na velika i mala slova.

Konstante, koje su posebne, uvedene su tek s PHP 4 (priručnik za PHP 3 spominje "konstante", ali danas se zovu "literali"). Iz nekog tajanstvenog razloga (možda se nije mogao pronaći konsenzus), donesena je odluka da se trajnim identifikatorima dopusti da define() d budu ili osjetljivi na velika i mala slova ili neosjetljivi na odbijanje programera. Zanimljivo je primijetiti da dok define() prema zadanim postavkama koristi konstante koje razlikuju velika i mala slova, odgovarajuća C kopija (REGISTER_*_CONSTANT) prema zadanim postavkama ne razlikuje velika i mala slova.

Pretvara znakove u nizu u mala slova.

Sintaksa:

String strtolower(string str);

Pretvara niz u mala slova. Vraća rezultat prijevoda.

Treba napomenuti da ako je lokalizacija netočno konfigurirana, funkcija će proizvesti, blago rečeno, čudne rezultate pri radu sa ćiriličnim slovima.

$str = "HeLLo svijet"; $str = strtolower($str); echo $str; // ispisuje hello world

strtoupper

Pretvara navedeni niz u velika slova.

Sintaksa:

String strtoupper(string str);

Pretvara niz u velika slova. Vraća rezultat pretvorbe. Ova funkcija dobro radi s engleskim slovima, ali može biti čudna s ruskim.

$str = "Zdravo svijete"; $str = strtoupper($str); echo $str; // ispisat će HELLO WORLD

ucprvo

Pretvara prvi znak niza u veliko slovo.

Sintaksa:

String ucfirst(string str);

Vraća niz čiji je prvi znak veliko slovo.

$str = "zdravo svijetu"; $str = ucfirst($str); echo $str; // ispisuje Hello world

ucwords

Pretvara prvi znak svake riječi u nizu u veliko slovo.

Sintaksa:

String ucwords(string str);

Vraća niz u kojem je prvi znak svake riječi u nizu napisan velikim slovom.

Ovdje se riječ odnosi na dio retka kojem prethodi razmak: razmak, novi redak, pomak stranice, povratak na novi red, horizontalni i okomiti tabulator.

Ćirilični znakovi se možda neće ispravno pretvoriti.

$str = "zdravo svijetu"; $str = ucfirst($str); echo $str; // ispisuje Hello World

PHP je dobar zbog raznolikosti funkcija na materinjem jeziku. Međutim, u nekim slučajevima potrebno je dodati funkcionalnost koja nedostaje. To je osobito vidljivo pri radu s funkcijama za pretvorbu nizova i raznim kodiranjima.

Na primjer, ucfirst je funkcija koja pretvara prvi znak niza u veliko slovo. Čini se da ne bi trebalo biti nikakvih problema, ali kada radite s ćirilicom, takva pretvorba se ne događa. Ovo se također odnosi na funkciju ucwords - ona pretvara prvi znak svake riječi u retku u veliko slovo.

Nema problema sa znakovima engleske abecede:

"; //pretvara prvi znak svake riječi u retku u velika slova echo ucwords($str); ?>

Testni niz Testni niz

Ali postoje problemi s ćirilicom:

"; //pretvara prvi znak svake riječi u retku u velika slova echo ucwords($str); ?>

Test linija test linija

Za PHP su tipični slučajevi kada funkcije rade "slabo" ili uopće ne rade s ćirilicom. Neke funkcije s prefiksom mb rješavaju probleme s ćirilicom. Na primjer, mb_strtolower - pretvara niz u mala slova. Za razliku od strtolower(), je li znak slovo određuje se na temelju svojstava Unicode znaka.

Da riješimo problem, definirajmo funkciju mb_ucfirst(string str [, string encoding]), koja će obraditi Unicode znakove.

Za pretvaranje prvog znaka svake riječi u retku u veliko slovo, samo upotrijebite mb_convert_case u načinu MB_CASE_TITLE.

prije 11 godina

Imajte na umu da je mb_strtolower() vrlo SPOR, ako imate vezu s bazom podataka, možda ćete ga htjeti koristiti za pretvaranje nizova u mala slova. Moguća su čak i latin1/9 (iso-8859-1/15) i druga kodiranja.

Pogledajte moje jednostavno mjerilo:

$tekst = "Lörem ipßüm dölör ßit ämet, cönßectetüer ädipißcing elit. Sed ligülä. Präeßent jüßtö tellüß, grävidä eü, tempüß ä, mättiß nön, örci. m qüiß lörem ß jüßtö ßtie.;

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

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

$timeMB = mikrovrijeme(true) - $timeMB;

// MySQL niži()
$timeSQL = mikrovrijeme(true);

Mysql_query("set imena latin1");
za($i = 0; $i< 30000 ; $i ++) {
$r = mysql_fetch_row(mysql_query("select lower(" $text /no-cache- $i ")" ));
$donji = $r [0];
}

$timeSQL = microtime(true) - $timeSQL;

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

// Rezultat na mojoj bilježnici:
// mb: 11.50642 sek.
// sql: 5.44143 sek.

?>

prije 7 godina

Imajte na umu da će pri korištenju s UTF-8 mb_strtolower pretvoriti samo velika slova u mala slova koja su označena Unicode svojstvom "Veliko slovo" ("Lu"). Međutim, postoje i slova kao što su "Brojevi slova" (svojstvo Unicode "Nl") koja također imaju varijante s malim i velikim slovima. Ovi znakovi neće biti pretvoreni u mb_strtolower!

Primjer:
Rimska slova Ⅰ, Ⅱ, Ⅲ, ..., Ⅿ (UTF-8 kodne točke 8544 do 8559) također postoje u svojim odgovarajućim varijantama malih slova ⅰ, ⅱ, ⅲ, ..., ⅿ (UTF-8 kodne točke 8560 do 8575) i, po mom mišljenju, također bi ih trebao pretvoriti mb_strtolower, ali nisu!

Velike internetske tvrtke (poput Googlea) spajaju obje varijante kao semantički jednake (budući da se prikazi razlikuju samo u velikim i velikim slovima).

Budući da nisam pronalazio odgovarajuće rješenje na internetu o tome kako preslikati sve UTF8-stringove u njihove parnjake malim slovima u PHP-u, nudim sljedeću tvrdo kodiranu proširenu funkciju mb_strtolower za UTF-8 nizove:

Funkcija omotava postojeću funkciju mb_strtolower() i dodatno zamjenjuje velika slova UTF8 znakova za koje postoji prikaz malih slova. Budući da na internetu ne postoji odgovarajuća tablica Unicode velikih i malih slova koju sam uspio pronaći, provjerio sam prvih milijun UTF8 znakova u Google-pretraživanju i -KeywordToolu i identificirao sljedećih 78 znakova kao velika slova, a ne zamjenjuje se s mb_strtolower, ali ima UTF8 pandan malim slovima.

//brojevi u in-line komentarima prikazuju znakove" Unicode kodne točke (CP).
funkcija strtolower_utf8_extended ($utf8_string)
{
$additional_replacements = niz
("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, $dodatne_zamjene);

Vrati $utf8_string ;
) //strtolower_utf8_extended()

Funkcije promjene velikih i malih slova

strtolower

Pretvara znakove u nizu u mala slova.

Sintaksa:

string strtolower(string str);

Pretvara niz u mala slova. Vraća rezultat prijevoda.

Treba napomenuti da ako je lokalizacija netočno konfigurirana, funkcija će proizvesti, blago rečeno, čudne rezultate pri radu sa ćiriličnim slovima.

$str = "HeLLo svijet";

$str = strtolower($str);

// ispisuje hello world

strtoupper

Pretvara navedeni niz u velika slova.

Sintaksa:

string strtoupper(string str);

Pretvara niz u velika slova. Vraća rezultat pretvorbe. Ova funkcija dobro radi s engleskim slovima, ali može biti čudna s ruskim.

$str = "Zdravo svijete";

$str = strtoupper($str);

// ispisat će HELLO WORLD

Pretvara prvi znak niza u veliko slovo.

Sintaksa:

string ucfirst(string str);

Vraća niz čiji je prvi znak veliko slovo.

$str = "zdravo svijetu";

$str = ucfirst($str);

// ispisuje Hello world

Pretvara prvi znak svake riječi u nizu u veliko slovo.

Sintaksa:

niz ucwords(string str);

Vraća niz u kojem je prvi znak svake riječi u nizu napisan velikim slovom.

Ovdje se riječ odnosi na dio retka kojem prethodi razmak: razmak, novi redak, pomak stranice, povratak na novi red, horizontalni i okomiti tabulator.

Ćirilični znakovi se možda neće ispravno pretvoriti.

$str = "zdravo svijetu";

$str = ucfirst($str);

// ispisuje Hello World

Iz knjige Encyclopedia of Linux Kernel Module Developer autora Pomerantza Orija

Iz knjige Ljudski faktori u programiranju Autor Konstantin Larry L

54 Agenti promjene Jedna riba, koja napravi pravi potez u pravom trenutku, može promijeniti tijek čitavog jata. U timu za razvoj softvera uspjeh uvođenja novog alata ili poboljšane metode kontrole verzija često ovisi o

Iz knjige Učinkovito korištenje STL-a autora Meyersa Scotta

Savjet 35: Implementirajte jednostavne usporedbe nizova koji nisu osjetljivi na velika i mala slova koristeći mismatch ili lexicographical_compare. Jedno od pitanja koje početnici u STL-u često postavljaju je "Kako STL uspoređuje nizove koji nisu osjetljivi na velika i mala slova?" Jednostavnost ovog pitanja je varljiva. Usporedbe

Iz knjige Osnove objektno orijentiranog programiranja autora Meyera Bertranda

Usporedba nizova koji ne razlikuju velika i mala slova Matt OsternAko ste ikada pisali programe koji koriste nizove (a tko nije?), vjerojatno ste se susreli s uobičajenom situacijom: dva niza koji se razlikuju samo u velikim i malim slovima

Iz knjige TCP/IP arhitektura, protokoli, implementacija (uključujući IP verziju 6 i IP sigurnost) od Faith Sydney M

Iz knjige XSLT tehnologija Autor Valikov Aleksej Nikolajevič

Promjena i dosljednost Razvoj softvera, kao što je spomenuto, ima mnogo veze s ponavljanjem. Da bismo razumjeli tehničke poteškoće ponovne upotrebe, moramo razumjeti prirodu ponavljanja. Iako programeri obično s vremena na vrijeme ponavljaju iste ideje

Iz knjige Razvoj aplikacija u Linux okruženju. Drugo izdanje Autor Johnson Michael K.

11.8.2 Premještanja i promjene Što se događa ako korisnik premjesti računalo na drugu lokaciju, povezujući ga s drugom mrežom ili podmrežom? Tijekom pokretanja, računalo koje koristi DHCP automatski će promijeniti svoju IP adresu i podmrežnu masku, a ako je potrebno -

Iz knjige C++. Zbirka recepata Autor Diggins Christopher

10.22.3 Promjene u DNS-u Nova vrsta zapisa resursa, AAAA, preslikava imena domena u IP adresu verzije 6. Primjer takvog zapisa: MICKEY IN AAAA 4321:0:1:2:3:4:567:89ABReverse lookup. mora se također osigurati . Da biste razlučili adrese u imena za IPv6, morat ćete dodati nove domene. Obrnuto pretraživanje

Iz knjige Linux i UNIX: programiranje ljuski. Vodič za razvojne programere. autora Tainsleya Davida

Iz knjige Uredsko računalo za žene Autor Pasternak Evgenija

Promjene u XPath 2.0 Verzija XPath jezika u razvoju, zbog integracije s XQueryjem, očito će pretrpjeti velike promjene. Nova specifikacija već je podijeljena na dva dokumenta: dokument koji opisuje podatkovni model i dokument koji opisuje funkcije i operatore. Stoga na

Iz knjige HTML, XHTML i CSS 100% autor Kvint Igor

11.7.2. Promjene koda Jednom kada parseCommand() ima ispravno prikazane strukture podataka, izvođenje naredbi ispravnim redoslijedom prilično je jednostavno uz dovoljno pažnje za detalje. Prije svega, dodajemo petlju parseCommand() za pokretanje podređenih procesa,

Iz autorove knjige

4.13. Izvođenje problema usporedbe nizova bez obzira na velika i mala slova Imate dva niza i želite utvrditi jesu li jednaki bez obzira na velika i mala slova u njihovim znakovima. Na primjer, "cat" nije jednako "dog", ali "Cat" mora biti jednako "cat", "CAT" ili "caT". Rješenje: Usporedite nizove koristeći standard

Iz autorove knjige

4.14. Izvođenje pretraživanja niza bez obzira na velika i mala slova Problem Želite pronaći podniz u nizu koji ne poštuje razlike u velikim i malim slovima Rješenje Koristite standardne algoritme transformacije i pretraživanja definirane u , kao i vlastite funkcije usporedbe karaktera, slične

Iz autorove knjige

8.1.8. Ignoriranje velikih i malih slova Prema zadanim postavkama, naredba grep razlikuje velika i mala slova. Za pretraživanje bez obzira na velika i mala slova koristite opciju -i. U datoteci data.f, simbol mjeseca Sept pojavljuje se velikim i malim slovima. Stoga za

Iz autorove knjige

Promjene Ako postoji mnogo izmjena u dokumentu, zgodno je koristiti ovu grupu gumba. Na primjer, vidite ispravak i slažete se s njim. Postavite pokazivač na njega i kliknite gumb Prihvati. Isticanje ispravka nestaje i organski se uklapa u vaš tekst

Iz autorove knjige

Svrha naziva oznaka i atributa razlikuje velika i mala slova U HTML dokumentima imena oznaka i atributa ne razlikuju velika i mala slova, tako da npr.

,
ili
znači istu oznaku tablice. Međutim, u XHTML-u to su različite oznake. Isto vrijedi i za imena



2024 wisemotors.ru. Kako radi. Željezo. Rudarstvo. Kriptovaluta.