Jump to content
php.lv forumi

htmlspecialchars > input lauki


Valcha

Recommended Posts

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by Valcha
Link to comment
Share on other sites

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).

Link to comment
Share on other sites

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 .. :)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...