ប្លង់គេហទំព័រដែលអាចសម្របខ្លួនបានពាក់ព័ន្ធនឹងការផ្លាស់ប្តូរគ្រប់គ្រាន់នៅក្នុងទំព័ររបស់វា អាស្រ័យលើឧបករណ៍ដែលអ្នកទស្សនាកំពុងប្រើ។ ប្រសិនបើទាក់ទងនឹងធាតុប្លុក និងក្នុងបន្ទាត់ ស្ទើរតែអ្វីៗទាំងអស់អាចត្រូវបាន "ស្វ័យប្រវត្តិ" ដោយប្រើ CSS និង JavaScript បន្ទាប់មកនៅពេលបង្កើតមាតិកា និងប្រើប្រាស់មូលដ្ឋានទិន្នន័យ វាពិបាកក្នុងការធ្វើដោយគ្មានផ្នែកខាងម៉ាស៊ីនមេ។
ជាធម្មតាយើងកាត់បន្ថយបន្ទាត់នៅក្នុង PHP នៅពេលដែលធាតុប្លង់ HTML មានដែនកំណត់លើចំនួនតួអក្សរដែលអាចមើលឃើញ ប៉ុន្តែនេះគឺជាកិច្ចការឯកជន។
ដំណោះស្រាយបែបបុរាណ
មុខងារមួយក្នុងចំណោមមុខងារដែលពេញនិយម និងប្រើញឹកញាប់បំផុតគឺ substr()។ ប៉ារ៉ាម៉ែត្រពីរឬបីត្រូវបានបញ្ជូនទៅវា:
- ខ្សែប្រភព; ទីតាំងចាប់ផ្តើម ($iPos); ប្រវែងនៃខ្សែអក្សររងដែលត្រូវកាត់ ($iLen)។
ប៉ារ៉ាម៉ែត្រចុងក្រោយអាចត្រូវបានលុបចោល។ ប្រសិនបើមានតែប៉ារ៉ាម៉ែត្រពីរប៉ុណ្ណោះត្រូវបានផ្តល់ឱ្យ៖ លទ្ធផលនៃ substr() នឹងក្លាយជាខ្សែអក្សររង ពីទីតាំងចាប់ផ្តើម ($iPos) ដល់ចុងបញ្ចប់នៃខ្សែអក្សរដើម។ ប្រសិនបើប៉ារ៉ាម៉ែត្របីត្រូវបានឆ្លងកាត់ នោះយើងកាត់ខ្សែអក្សរ PHP ពីទីតាំងចាប់ផ្តើម ($iPos) ទៅប្រវែងដែលបានបញ្ជាក់ ($iLen)។
ការជ្រើសរើសតែការចាប់ផ្តើមនៃខ្សែអក្សរដោយប្រើមុខងារនេះគឺអាចធ្វើទៅបាននៅពេលដែលប៉ារ៉ាម៉ែត្រទីមួយគឺសូន្យ។ ប្រសិនបើទីតាំងដំបូងគឺអវិជ្ជមាន នោះ PHP នឹងពិចារណាតួអក្សរនៅទីតាំង $iPos ពីចុងបញ្ចប់នៃខ្សែអក្សរ ដើម្បីជាការចាប់ផ្តើមដែលយើងកាត់ខ្សែអក្សរ។ តួអក្សរក្នុងបន្ទាត់ត្រូវបានដាក់លេខចាប់ពីសូន្យ។
មុខងារពិសេស
PHP ពិចារណាលើភារកិច្ច "កាត់ខ្សែអក្សរ" (ក្នុងន័យទូលំទូលាយ) ក្នុងបរិបទ៖ ពីភាគីទាំងពីរ។ ជាប្រវត្តិសាស្ត្រ នេះគឺជាមុខងារ trim() ដែលមានបំណងលុបតួអក្សរដែលមិនសំខាន់ចេញ៖
- ចន្លោះ; ការបំបែកបន្ទាត់; ការត្រឡប់មកវិញនៃការដឹកជញ្ជូន; តារាង; តួអក្សរ null
ពីចុងទាំងពីរនៃបន្ទាត់។ នេះគឺជាមុខងារដ៏ពេញនិយមមួយ ជាពិសេសនៅពេលធ្វើការជាមួយមូលដ្ឋានទិន្នន័យ ការជ្រើសរើសដែលតែងតែមានចន្លោះច្រើន។ ការប្រើមុខងារ explode() ច្រើនតែនាំឱ្យមានតួអក្សរបន្ថែមនៅខាងដើម និងចុងនៃខ្សែអក្សរ។
ទោះយ៉ាងណាក៏ដោយ មិនមែនអ្នកអភិវឌ្ឍន៍ទាំងអស់ប្រើមុខងារ trim() ដល់សក្តានុពលពេញលេញរបស់វានោះទេ។ សម្រាប់កិច្ចការ "កាត់ខ្សែអក្សរ" PHP ស្នើឱ្យប្រើប៉ារ៉ាម៉ែត្រទីពីរនៃមុខងារ ដែលអ្នកអាចបញ្ជាក់សំណុំតួអក្សរណាមួយដែលគួរតែត្រូវបានលុបចេញពីខ្សែអក្សរប្រភព។
![](https://i0.wp.com/nastroy.info/images/post/436131-1519394780.jpg)
វាមានសារៈសំខាន់ដែលតួអក្សរត្រូវបានដកចេញតែពីដើម និងចុងបញ្ចប់នៃខ្សែអក្សរប្រភពប៉ុណ្ណោះ។ វាជាការសំខាន់ណាស់ដែលដោយរៀបចំរបាំងនៃតួអក្សរដែលត្រូវលុបនិងលំដាប់នៃកិច្ចការរង។
- ដំបូងយើងកាត់ខ្សែអក្សរ PHP មួយរបាំងម្ដងៗ។ បន្ទាប់មកមួយទៀត។ បន្ទាប់មកនៅថ្ងៃទីបី។
ជាលទ្ធផលនៃលំដាប់នៃជម្រើសសម្រាប់ការប្រើប្រាស់មុខងារមួយ យើងបានកាត់ចេញអត្ថបទនៅក្នុង PHP តាមតម្រូវការដើម្បីដោះស្រាយកិច្ចការ។
វិធីសាស្រ្តមិនស្តង់ដារ
ប្រសិនបើយើងមិនពិចារណាលើជួរទាំងមូលនៃមុខងារខ្សែអក្សរនៃភាសានោះ មុខងារទាំងពីរនេះផ្ទុះ()/implode() ហើយមុខងារ str_replace() អនុញ្ញាតឱ្យយើងដោះស្រាយបញ្ហាដែលមិនមានលក្ខណៈស្តង់ដារនៃព័ត៌មានខ្សែអក្សរ "កាត់"។
![](https://i1.wp.com/nastroy.info/images/post/297182-1519394780.jpg)
លទ្ធផលនៃសំណួរ MySQL តែងតែមានលក្ខណៈផ្លូវការនៅក្នុងរចនាសម្ព័ន្ធនៃព័ត៌មានដែលបានត្រឡប់មកវិញ ហើយខ្លឹមសារនៃវាល (ធាតុ) នៃលទ្ធផលគឺតែងតែត្រូវបានកំណត់ដោយប្រភព ពោលគឺអ្នកអភិវឌ្ឍន៍ដែលបានរចនាមូលដ្ឋានទិន្នន័យ។
នេះគឺជាឧទាហរណ៍ជាក់លាក់មួយ ប៉ុន្តែវាពិតជាឆ្លើយសំណួរ៖ របៀបកាត់បន្ទាត់ក្នុង PHP នៅពេលដែលមានបន្ទាត់ច្រើន។ អនុគមន៍ trm() គឺជាមុខងារជាក់លាក់មួយ ហើយប្រវត្តិរបស់វាត្រូវបានកំណត់ដោយភារកិច្ចនៅពេលដែលមិនមានព័ត៌មានច្រើន ហើយមិនចាំបាច់កាត់ផ្តាច់អ្វីក្រៅពីតួអក្សរដែលមិនសំខាន់នោះទេ។
សព្វថ្ងៃនេះព័ត៌មានផ្សាយជាដុំធំ ហើយការកាត់តាមបន្ទាត់គឺមិនត្រឹមតែមិនចាំបាច់ប៉ុណ្ណោះទេ ប៉ុន្តែក៏មិនសមហេតុផលដែរ។
ការបំបែកចូលទៅក្នុងសមាសធាតុក៏ជាជម្រើសមួយផងដែរ ដូចជាការកាត់ខ្សែអក្សរ។ PHP នឹងប្រើ explode() ដោយស្វ័យប្រវត្តិដើម្បីកាត់អត្ថបទធំមួយទៅជាបន្ទាត់ដែលត្រូវការជាច្រើន។ ដោយប្រើមុខងារ str_replace() - នោះគឺការជំនួសការកើតឡើងនៃតួអក្សរមួយជាមួយមួយផ្សេងទៀត - អ្នកអាចសម្រេចបាននូវឥទ្ធិពលស្រដៀងគ្នា។
![](https://i0.wp.com/nastroy.info/images/post/367440-1519394781.jpg)
ថាមវន្ត និងបរិមាណនៃព័ត៌មានដែលត្រូវការដំណើរការជាដំបូង ដំណោះស្រាយគ្រប់គ្រាន់ មិនមែនការប្រើប្រាស់មុខងារពិសេសមួយនោះទេ។
ការពិគ្រោះយោបល់តាមអ៊ីនធឺណិតលើការថែទាំគេហទំព័រនៅ Ulyanovsk: ICQ# 179104682
របៀបកាត់ខ្សែអក្សរ Cyrillic ដោយប្រើ PHP
កាលបរិច្ឆេទនៃការបោះពុម្ពអត្ថបទ៖ ០៦/០១/២០១៤
ការបង្កើតគេហទំព័រនៅ Ulyanovsk ដែលមានមុខងារធ្ងន់ធ្ងរ និងអន្តរកម្មជាមួយមូលដ្ឋានទិន្នន័យជាញឹកញាប់តម្រូវឱ្យបន្ទាត់ជាក់លាក់មួយមិនលើសពីបរិមាណជាក់លាក់ជាក់លាក់មួយ។ ជាឧទាហរណ៍ វាអាចត្រូវការជាចាំបាច់ ដើម្បីកំណត់ចំនួនតួអក្សរដែលបានបញ្ជូនទៅម៉ាស៊ីនមេមូលដ្ឋានទិន្នន័យដោយប្រើវាលបញ្ចូល ដើម្បីបង្ហាញតែផ្នែកនៃបន្ទាត់នៅលើទំព័រគេហទំព័រ (ឧទាហរណ៍ នៅពេលបង្កើតការប្រកាសព័ត៌មានដែលមានកម្ពស់ស្មើគ្នាក្នុងបញ្ជី) និងសម្រាប់កិច្ចការជាច្រើនទៀត។
រឿងដំបូងដែលអ្នកសរសេរកម្មវិធីថ្មីថ្មោងជួបប្រទះគឺមុខងារ PHP substr ។ វាពិតជាត្រូវបានប្រើដើម្បីកាត់ខ្សែអក្សរ ហើយវាក្យសម្ព័ន្ធរបស់វាគឺសាមញ្ញ ស្រទាប់ខាងក្រោម(string, int start [, int length]) ដែល int start គឺជាតួអក្សរចាប់ផ្តើមដែលចាប់ផ្តើមកាត់ខ្សែអក្សរ ហើយប៉ារ៉ាម៉ែត្រស្រេចចិត្ត int length គឺជាចំនួនតួអក្សរដែលត្រូវកាត់។ ទោះយ៉ាងណាក៏ដោយ វាហាក់ដូចជាចម្លែកចំពោះអ្នកសរសេរកម្មវិធីដែលគ្មានបទពិសោធន៍ ប្រសិនបើគាត់ព្យាយាមប្រើវាដើម្បីកាត់ខ្សែអក្សរ Cyrillic នៅក្នុង PHP ។ ជាលទ្ធផលនៃស្រទាប់រងដែលធ្វើការជាមួយខ្សែអក្សរ Cyrillic សញ្ញាសួរ ឬសញ្ញាសួរនៅក្នុងពេជ្រ អាចលេចឡើងនៅចុងបញ្ចប់នៃខ្សែអក្សរដែលបានកាត់ ហើយសម្រាប់ហេតុផលមួយចំនួន ចំនួនសរុបនៃតួអក្សរដែលបានកាត់គឺតិចជាងពីរដង។ បញ្ជាក់ក្នុងប៉ារ៉ាម៉ែត្រប្រវែង int ។ ហេតុអ្វីបានជារឿងនេះកើតឡើង?
ការពិតគឺថាតួអក្សររុស្ស៊ីនៅក្នុង UTF-8 មានទំហំ 2 បៃ ហើយអក្សរឡាតាំងមានត្រឹមតែ 1 បៃប៉ុណ្ណោះ។ អនុគមន៍ PHP កាត់ខ្សែអក្សរដោយបៃ មិនមែនដោយតួអក្សរទេ។ ប្រសិនបើខ្សែអក្សរមានតួអក្សរឡាតាំង នោះគ្មានអ្វីចម្លែកកើតឡើងទេ ព្រោះចំនួនតួអក្សរត្រូវគ្នានឹងចំនួនបៃ។ ហើយនៅពេលធ្វើការជាមួយអក្ខរក្រម Cyrillic ដែលតួអក្សរនីមួយៗយក 2 បៃ ប៉ារ៉ាម៉ែត្រប្រវែង int អាចធ្លាក់ចូលទៅក្នុង "កណ្តាល" នៃតួអក្សរបានយ៉ាងងាយស្រួល ហើយជាលទ្ធផល នៅចុងបញ្ចប់នៃបន្ទាត់កាត់ នៅពេលចេញ យើងនឹង ឃើញសញ្ញាសួរមិនល្អនោះនៅក្នុងពេជ្រ។
តើធ្វើដូចម្តេចដើម្បីកាត់ផ្នែកនៃបន្ទាត់ដែលមានអក្ខរក្រម Cyrillic ឱ្យបានត្រឹមត្រូវ?
ដំណោះស្រាយចំពោះបញ្ហានេះគឺពិតជាសាមញ្ញណាស់។ សម្រាប់ការកំណត់ PHP ត្រឹមត្រូវនៃខ្សែអក្សរដែលមានតួអក្សរ Cyrillic អ្នកត្រូវប្រើមុខងារ PHP iconv_substr
វាក្យសម្ព័ន្ធមុខងារគឺសាមញ្ញ៖
iconv_substr (string, int start [, int length [, charset]])
ឧទាហរណ៍សម្រាប់កាត់ខ្សែអក្សរជាភាសារុស្សីទៅជា 80 តួអក្សរជាមួយនឹងការអ៊ិនកូដ UTF-8 ដោយប្រើ iconv_substr៖
$new_string = iconv_substr ($string, 0, 80, “UTF-8”);
លេខសូន្យក្នុងឧទាហរណ៍មានន័យថាចំនួន 80 តួអក្សរចាប់ផ្តើមពីដើមបន្ទាត់។
គេហទំព័រសន្មត់ថាមានការផ្លាស់ប្តូរគ្រប់គ្រាន់នៅក្នុងទំព័ររបស់វា អាស្រ័យលើឧបករណ៍ដែលអ្នកទស្សនាប្រើ។ ប្រសិនបើទាក់ទងនឹងធាតុប្លុក និងក្នុងបន្ទាត់ ស្ទើរតែអ្វីៗទាំងអស់អាចត្រូវបាន "ស្វ័យប្រវត្តិ" ដោយប្រើ CSS និង JavaScript បន្ទាប់មកនៅពេលបង្កើតមាតិកា និងប្រើប្រាស់មូលដ្ឋានទិន្នន័យ វាពិបាកក្នុងការធ្វើដោយគ្មានផ្នែកខាងម៉ាស៊ីនមេ។
ជាធម្មតាយើងកាត់បន្ថយបន្ទាត់នៅក្នុង PHP នៅពេលដែលធាតុប្លង់ HTML មានដែនកំណត់លើចំនួនតួអក្សរដែលអាចមើលឃើញ ប៉ុន្តែនេះគឺជាកិច្ចការឯកជន។
ដំណោះស្រាយបែបបុរាណ
មុខងារមួយក្នុងចំណោមមុខងារដែលពេញនិយម និងប្រើញឹកញាប់បំផុតគឺ substr()។ ប៉ារ៉ាម៉ែត្រពីរឬបីត្រូវបានបញ្ជូនទៅវា:
- ខ្សែប្រភព;
- ទីតាំងចាប់ផ្តើម ($iPos);
- ប្រវែងនៃខ្សែអក្សររងដែលត្រូវកាត់ ($iLen)។
ប៉ារ៉ាម៉ែត្រចុងក្រោយអាចត្រូវបានលុបចោល។ ប្រសិនបើមានតែប៉ារ៉ាម៉ែត្រពីរប៉ុណ្ណោះត្រូវបានផ្តល់ឱ្យ៖ លទ្ធផលនៃ substr() នឹងក្លាយជាខ្សែអក្សររង ពីទីតាំងចាប់ផ្តើម ($iPos) ដល់ចុងបញ្ចប់នៃខ្សែអក្សរដើម។ ប្រសិនបើប៉ារ៉ាម៉ែត្របីត្រូវបានឆ្លងកាត់ នោះយើងកាត់ខ្សែអក្សរ PHP ពីទីតាំងចាប់ផ្តើម ($iPos) ទៅប្រវែងដែលបានបញ្ជាក់ ($iLen)។
ការជ្រើសរើសតែការចាប់ផ្តើមនៃខ្សែអក្សរដោយប្រើមុខងារនេះគឺអាចធ្វើទៅបាននៅពេលដែលប៉ារ៉ាម៉ែត្រទីមួយគឺសូន្យ។ ប្រសិនបើទីតាំងដំបូងគឺអវិជ្ជមាន នោះ PHP នឹងពិចារណាតួអក្សរនៅទីតាំង $iPos ពីចុងបញ្ចប់នៃខ្សែអក្សរ ដើម្បីជាការចាប់ផ្តើមដែលយើងកាត់ខ្សែអក្សរ។ តួអក្សរក្នុងបន្ទាត់ត្រូវបានដាក់លេខចាប់ពីសូន្យ។
មុខងារពិសេស
PHP ពិចារណាលើភារកិច្ច "កាត់ខ្សែអក្សរ" (ក្នុងន័យទូលំទូលាយ) ក្នុងបរិបទ៖ ពីភាគីទាំងពីរ។ ជាប្រវត្តិសាស្ត្រ នេះគឺជាមុខងារ trim() ដែលមានបំណងលុបតួអក្សរដែលមិនសំខាន់ចេញ៖
- ចន្លោះ;
- ការបំបែកបន្ទាត់;
- ការត្រឡប់មកវិញនៃការដឹកជញ្ជូន;
- តារាង;
- តួអក្សរ null
ពីចុងទាំងពីរនៃបន្ទាត់។ នេះគឺជាមុខងារដ៏ពេញនិយមមួយ ជាពិសេសនៅពេលធ្វើការជាមួយមូលដ្ឋានទិន្នន័យ ការជ្រើសរើសដែលតែងតែមានចន្លោះច្រើន។ ការប្រើមុខងារ explode() ច្រើនតែនាំឱ្យមានតួអក្សរបន្ថែមនៅខាងដើម និងចុងនៃខ្សែអក្សរ។
ទោះយ៉ាងណាក៏ដោយ មិនមែនអ្នកអភិវឌ្ឍន៍ទាំងអស់ប្រើមុខងារ trim() ដល់សក្តានុពលពេញលេញរបស់វានោះទេ។ សម្រាប់កិច្ចការ "កាត់ខ្សែអក្សរ" PHP ស្នើឱ្យប្រើប៉ារ៉ាម៉ែត្រទីពីរនៃមុខងារ ដែលអ្នកអាចបញ្ជាក់សំណុំតួអក្សរណាមួយដែលគួរតែត្រូវបានលុបចេញពីខ្សែអក្សរប្រភព។
វាមានសារៈសំខាន់ដែលតួអក្សរត្រូវបានដកចេញតែពីដើម និងចុងបញ្ចប់នៃខ្សែអក្សរប្រភពប៉ុណ្ណោះ។ វាជាការសំខាន់ណាស់ដែលដោយរៀបចំរបាំងនៃតួអក្សរដែលត្រូវលុបនិងលំដាប់នៃកិច្ចការរង។
- ដំបូងយើងកាត់ខ្សែអក្សរ PHP មួយរបាំងម្ដងៗ។
- បន្ទាប់មកមួយទៀត។
- បន្ទាប់មកនៅថ្ងៃទីបី។
ជាលទ្ធផលនៃលំដាប់នៃជម្រើសសម្រាប់ការប្រើប្រាស់មុខងារមួយ យើងបានកាត់ចេញអត្ថបទនៅក្នុង PHP តាមតម្រូវការដើម្បីដោះស្រាយកិច្ចការ។
វិធីសាស្រ្តមិនស្តង់ដារ
ប្រសិនបើយើងមិនពិចារណាលើជួរទាំងមូលនៃមុខងារខ្សែអក្សរនៃភាសានោះ មុខងារទាំងពីរនេះផ្ទុះ()/implode() ហើយមុខងារ str_replace() អនុញ្ញាតឱ្យយើងដោះស្រាយបញ្ហាដែលមិនមានលក្ខណៈស្តង់ដារនៃព័ត៌មានខ្សែអក្សរ "កាត់"។
លទ្ធផលនៃសំណួរ MySQL តែងតែមានលក្ខណៈផ្លូវការនៅក្នុងរចនាសម្ព័ន្ធនៃព័ត៌មានដែលបានត្រឡប់មកវិញ ហើយខ្លឹមសារនៃវាល (ធាតុ) នៃលទ្ធផលគឺតែងតែត្រូវបានកំណត់ដោយប្រភព ពោលគឺអ្នកអភិវឌ្ឍន៍ដែលបានរចនាមូលដ្ឋានទិន្នន័យ។
នេះគឺជាឧទាហរណ៍ជាក់លាក់មួយ ប៉ុន្តែវាពិតជាឆ្លើយសំណួរ៖ របៀបកាត់បន្ទាត់ក្នុង PHP នៅពេលដែលមានបន្ទាត់ច្រើន។ អនុគមន៍ trm() គឺជាមុខងារជាក់លាក់មួយ ហើយប្រវត្តិរបស់វាត្រូវបានកំណត់ដោយភារកិច្ចនៅពេលដែលមិនមានព័ត៌មានច្រើន ហើយមិនចាំបាច់កាត់ផ្តាច់អ្វីក្រៅពីតួអក្សរដែលមិនសំខាន់នោះទេ។
សព្វថ្ងៃនេះព័ត៌មានផ្សាយជាដុំធំ ហើយការកាត់តាមបន្ទាត់គឺមិនត្រឹមតែមិនចាំបាច់ប៉ុណ្ណោះទេ ប៉ុន្តែក៏មិនសមហេតុផលដែរ។
ការបំបែកចូលទៅក្នុងសមាសធាតុក៏ជាជម្រើសមួយផងដែរ ដូចជាការកាត់ខ្សែអក្សរ។ PHP នឹងប្រើ explode() ដោយស្វ័យប្រវត្តិដើម្បីកាត់អត្ថបទធំមួយទៅជាបន្ទាត់ដែលត្រូវការជាច្រើន។ ដោយប្រើមុខងារ str_replace() - នោះគឺការជំនួសការកើតឡើងនៃតួអក្សរមួយជាមួយមួយផ្សេងទៀត - អ្នកអាចសម្រេចបាននូវឥទ្ធិពលស្រដៀងគ្នា។
ថាមវន្ត និងបរិមាណនៃព័ត៌មានដែលត្រូវការដំណើរការជាដំបូង ដំណោះស្រាយគ្រប់គ្រាន់ មិនមែនការប្រើប្រាស់មុខងារពិសេសមួយនោះទេ។