Valcha Posted April 2, 2009 Report Share Posted April 2, 2009 Neesmu gluži iesācējs, bet tomēr nolēmu pārliecināties - vai patiešām ir tā, ka htmlspecialchars, izmantojot formas input elementiem, sūtot uz POST pārvēršas atpakaļ uz parastajiem simboliem (tipa htmlspecialchars_decode)? Vai patiešām tā ir un vai tas notiek uz visiem pārlūkiem? Esmu izpētījis, ka specialchars neietekmē ne lauku maxlength, ne javascript strlen utt. Tā kā izskatās, ka htmlspecialchars var izmantot da jebkur, ne pie kā nepiedomājot. Vai man ir taisnība? Quote Link to comment Share on other sites More sharing options...
bubu Posted April 2, 2009 Report Share Posted April 2, 2009 htmlspecialchars jāpielieto, lai browseris pareizi saprastu speciālos simbolus (", &, <, ...), kad tie tiek likti html'ā. Līdzko tas ir saņēmis tādu stringu, tas to atmiņā pieglabā jau normālā veidā - tas notiek pie lapas atvēršānas. Pie POST sūtīšanas tas strings vairs nekur nav jāpārvērš, tie jau ir pārvērsti. Quote Link to comment Share on other sites More sharing options...
Valcha Posted April 2, 2009 Author Report Share Posted April 2, 2009 (edited) Nu tātad, tas ir visur pielietojams. Bet Tu varētu man dundukam izskaidrot, kam vajadzīgs string htmlspecialchars ( string $string [, int $quote_style= ENT_COMPAT [, string $charset[, bool $double_encode= true ]]] ) ? Kādēļ ir jānorāda CHARSET? Varētu domāt, ka citādi viņš gribēs kaut ko darīt ar UNICODE simboliem, bet nekā, viss ir korekti. Edited April 2, 2009 by Valcha Quote Link to comment Share on other sites More sharing options...
bubu Posted April 2, 2009 Report Share Posted April 2, 2009 Nu, piemēram, ja tev tas strings būs UCS2 kodējumā, tad var gadīties, ka vienbaitīgs simbols & īstenībā nav čarakters "&", tas ir tikai sastāvdaļa no divbaitu čaraktera. Taču php to nezinās, un uzskatīs, ka & ir jāaizvieto ar & - tādējādi tas sačakarēs stringu. Tāpēc jānorāda čarsets, ja vien tu nelieto vienbaitīgus kodējumus (vai arī UTF-xx paveidus). Quote Link to comment Share on other sites More sharing options...
Valcha Posted April 3, 2009 Author Report Share Posted April 3, 2009 Nu, piemēram, ja tev tas strings būs UCS2 kodējumā, tad var gadīties, ka vienbaitīgs simbols & īstenībā nav čarakters "&", tas ir tikai sastāvdaļa no divbaitu čaraktera. Taču php to nezinās, un uzskatīs, ka & ir jāaizvieto ar & - tādējādi tas sačakarēs stringu.Tāpēc jānorāda čarsets, ja vien tu nelieto vienbaitīgus kodējumus (vai arī UTF-xx paveidus). Hmm, bet neredzu, kurā brīdī PHP ir problēmas ar divbaitu čarakteriem pie htmlspecialchars. Man divbaitu čarakteri nemainās, ja lapas WEB kodējums ir UTF-8 un faila kodējums ir UTF-8. Tas jau laikam ir būtiski tikai tad, ja pirms tam uz stringu ir izpildīts htmlentities, ne? Vai Tev nebūtu grūti parādīt kādu konkrētu piemēru? Tiešām sāku justies neaptēsts .. :) Quote Link to comment Share on other sites More sharing options...
bubu Posted April 3, 2009 Report Share Posted April 3, 2009 Ja tev kodējums ir UTF-8 tad, kā jau saku, tev nebūs nekādu problēmu. Jo UTF-8 ir savietojams ar ASCII kodējumu, kamēr tu neizmanto augšejos 128 simbolus. Konkrēts piemērs ir ar stringu, kurā (kā jau teicu) ir & simbols kā sastāvdaļa no multibyte čaraktera. UTF-8 (un citos UTF) tas nav iespējams. Quote Link to comment Share on other sites More sharing options...
Valcha Posted April 3, 2009 Author Report Share Posted April 3, 2009 Super, paldies par izskaidrojumu! :) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.