PHP боюнча ар кандай коддоо

  1. Authors
  2. x64 (ака ANDI)

башталгыч аябай коддоо сыяктуу бир нерсе тууралуу кам көрүшпөйт skriptopisatelyam

башталгыч аябай коддоо сыяктуу бир нерсе тууралуу кам көрүшпөйт skriptopisatelyam. Ошондуктан сайттар кээде коркунучтуу ашканага маалыматтарды базасына алынат түзүлгөн башка бетке бир коддоо жана Server үчүнчү берилет тапса болот. беттеги натыйжасында Силер болсо аны жок дегенде 2 жолу чечмелеши мүмкүн болсо. Демек, эмне үчүн андай кырсык жана аны кантип жоюуга болот керек?

Орус сегментинде көп деп аталган терезелер-коддомо жолуктуруу мүмкүн болгон. башкача аны чакырып: Windows-1251, CP1251 же ANSI. кийинки UTF-8 келет. Сиз Юникод атын таба аласыз, бирок ал толугу менен туура, т. үчүн Юникод эмес, бүт тобу үчүн жалпы аталышы (UTF-8, UTF-16, UTF-32). эмес. жана элдик koi8-р абдан сейрек кездешкен же бир эле жолу, 8 - популярдуу linuksovskaya коддоо жолу. Албетте, орус сегмент жана дагы башка бир нерсени, бирок, тескерисинче, бир "эркелетип," жазуучу болуп тосуп алышат.

негизги айырмачылык UTF-8 башка (негизинен Windows-1251 жана koi8-ж) - саны 256. чектөө маалымат коддоо менен көрсөтүлүшү мүмкүн, акыркы болуп бир-байт жана тамгалардын саны тексти толугу менен өкүлчүлүк кылуу үчүн өзүн-өзү башка деп Бул жетиштүү болушу мүмкүн эмес. жана HTML аныкталды - деп аталган мнемоника пайдалануу. Мисалы, төмөнкүдөй:

© - & көчүрмөсү;

Ар бир ушундай мүнөздөгү каармандардын бир тобу тарабынан баяндалат деп тышкары, коду malochitaemym жана текст менен иштөө татаал болуп саналат. Ошондо ал Multibyte UTF-8 жардамга келет. бир текст боюнча ар кандай алиппе жана ар кандай белгилер каттарды пайдалануу үчүн абдан ыңгайлуу.

Ошентип, көпчүлүк жайлуу коюлган алгачкы шарттары төмөнкүдөй: коддоо базасы, PHP-Кол жазмалар жана HTML-барактар ​​/ JS-Кол жазмалар бирдей болууга тийиш. Албетте, ар кандай колдоно алат, бирок бул учурда чаташтырып алуу коркунучу бар. ал пайдаланылган учурда коду бетине кандай мааниге ээ эмес. сайт гана орус тилдүү аудиториясы үчүн болсо, терезелер-1251 жетиштүү болмок. Эгерде логикалык тандоосу UTF-8 болушу керек. Биринчи өзү аздыр-көптүр түшүнүктүү. жана көп-байт үчүн чечмелөө кээ бир ишараттар керек.

UTF-8 пайдаланууда стандарттык vindusovsky блокнот иштебей калат! Ошол мүнөзү боюнча сиз сактап редактор экенин, кол чокусуна кошуу - 3 белгиден, деп аталган Бон (байт) бир ачып жатканда коддомо аныктоого мүмкүн болгон. жакшы бир редактор тандоо: Notepad2 же Notepad ++ . колу жок орнотууларды сактоо үчүн тандап алган болушу мүмкүн.

Кийинки маанилүү кадам - ​​базасын менен иштөө. Бул коддоо / стол / текст талаасы тексттин коддоо менен дал негизинде абдан баалуу болуп саналат (башка CP1251 же UTF-8, же бир нерсе болушу мүмкүн). түрүндө базасын алынган маалыматтар, эгер "Zyukov", кыязы, кошулманы коддоо базасын сакталган маалыматтардан кыйла айырмаланып турат. төмөнкүдөй суроо кырдаалды жоюуга жардам берет (базасына байланыштырып кийин дароо эле чуркап):

Сиздин сайт Windows-1251 пайдаланган болсо, анда силер аны көрсөтүү керек - CP1251.

Жалпысынан, эч кандай чоң келишим. стандарттык PHP милдеттери көп байт саптар менен иштөө үчүн арналган эмес. Бирок абалды жакшыртууга жардам берет стандарттык китепканалар бар: iconv жана mbstring . ар дайым эле у СЕМЫН аркылуу жандырылды зарыл которуу болуп саналат.

бардык эрежелери менен жазылган алган жазууларында алынган маалыматтар болуп саналат. туура аттарын жиберүү жана колдонуучунун браузерде бет кодду бойдон калууда. Бул сыяктуу аталышы жиберип:

баш ( "Content-Type: Текст / HTML; белги = UTF-8);

Эгер бир-байт коддомо колдонуп жаткан болсо, анда белги үчүн маани ар түрдүү болот - Windows-1251. анда көйгөйлөр калыш керек.

UTF-8 PHP менен иштөө үчүн бир нече жөнөкөй мисал:

1-мисал: iconv, сапка тамгалардын саны

$ S = 'сап'; # UTF-8 Сап $ cnt1 = strlen ($ S); # 12 Наркы $ cnt2 = iconv_strlen ($ S, UTF-8) болот; # Туура балл 6

2-жагдай: mbstring, сапка тамгалардын саны

$ S = 'сап'; # UTF-8 Сап $ cnt1 = strlen ($ S); # 12 Наркы $ cnt2 = mb_strlen ($ S, UTF-8) болот; # Туура балл 6

3-жагдай: туруктуу сөз айкашы издөө жана алмаштыруу

$ S = 'сап'; UTF-8 $ жылдары # Line = preg_replace ( '/ б / I', 'д' $ лар); # Алмаштыруу $ с = preg_replace боло бербейт ( '/ б / Ю "," д ", $ лар); # Жыйынтык сөз док

мен өзгөрткүч иш-сезбей издөөнү талап кылат, жана у өзгөрткүч UTF-8 саптар менен иштөө үчүн туруктуу сөз айкашы кыймылдаткычын айтылат.

Кимдир бирөө PHP UTF-8 менен иштешүү мүмкүн эмес экенин айткан болсо, анда ал туура эмес болуп калат. бир нече жыл бою бул коддоо бардык долбоорлорду кылып, бардык боюнча эч кандай маселе жок. Издөө каражаттарын өздөрү бул сонун коддомо колдонушат.

Authors

онлайн 11:00 эмес,

x64 (ака ANDI)

Комментарии: 2846 Курамы: 395 Дата: 02-04-2009

Демек, эмне үчүн андай кырсык жана аны кантип жоюуга болот керек?