Punguza herufi za mwisho katika mfuatano wa php. Kazi za kufanya kazi na kamba katika php. PHP kitendakazi strtolower - hubadilisha mfuatano kuwa herufi ndogo

Mpangilio wa tovuti unaojirekebisha unahusisha mabadiliko ya kutosha katika kurasa zake kulingana na kifaa anachotumia mgeni. Ikiwa kuhusiana na vipengele vya kuzuia na vya ndani karibu kila kitu kinaweza "otomatiki" kwa kutumia CSS na JavaScript, basi wakati wa kuzalisha maudhui na kutumia hifadhidata, ni vigumu kufanya bila upande wa seva.

Kwa kawaida tunapunguza mstari katika PHP wakati kipengee cha mpangilio wa HTML kina kikomo kwa idadi ya herufi zinazoonekana, lakini hii ni kazi ya kibinafsi.

Suluhisho la jadi

Moja ya kazi maarufu na zinazotumiwa mara kwa mara ni substr(). Vigezo viwili au vitatu hupitishwa kwake:

    kamba ya chanzo; nafasi ya kuanza ($ iPos); urefu wa kamba ndogo ya kukatwa ($iLen).

Kigezo cha mwisho kinaweza kuachwa. Ikiwa vigezo viwili tu vimetolewa: matokeo ya substr() yatakuwa kamba ndogo, kutoka nafasi ya kuanza ($iPos) hadi mwisho wa mfuatano wa asili. Ikiwa vigezo vitatu vilipitishwa, basi tunapunguza kamba ya PHP kutoka nafasi ya kuanza ($iPos) hadi urefu maalum ($iLen).

Kuchagua tu mwanzo wa kamba kwa kutumia kazi hii inawezekana wakati parameter ya kwanza ni sifuri. Ikiwa nafasi ya awali ni hasi, basi PHP itazingatia herufi katika nafasi $iPos kutoka mwisho wa mfuatano kuwa mwanzo ambapo tunapunguza kamba. Herufi katika mstari zimehesabiwa kuanzia sufuri.

Kazi maalum

PHP inazingatia kazi ya "kukata kamba" (kwa maana pana) katika muktadha: kutoka pande zote mbili. Kihistoria, hii ni trim() kazi, ambayo inalenga kuondoa herufi zisizo muhimu:

    nafasi; mapumziko ya mstari; kurudi kwa gari; tabulation; wahusika tupu

kutoka ncha zote mbili za mstari. Hiki ni kipengele maarufu sana, hasa wakati wa kufanya kazi na hifadhidata, uteuzi ambao mara nyingi una nafasi nyingi. Kutumia explode() kazi pia mara nyingi husababisha herufi za ziada mwanzoni na mwisho wa kamba.

Walakini, sio wasanidi wote wanaotumia trim() kitendakazi kwa uwezo wake kamili. Kwa kazi ya "punguza kamba", PHP inapendekeza kutumia kigezo cha pili cha chaguo la kukokotoa, ambapo unaweza kutaja seti yoyote ya wahusika ambayo inapaswa kuondolewa kwenye mfuatano wa chanzo.


Ni muhimu kwamba wahusika waondolewe tu kutoka mwanzo na mwisho wa kamba ya chanzo. Ni muhimu kwamba kwa kuendesha masks ya wahusika kufutwa na mlolongo wa kazi ndogo.

    Kwanza, tunakata kamba ya PHP mask moja kwa wakati mmoja. Kisha mwingine. Kisha ya tatu.

Kama matokeo ya mlolongo wa chaguo za kutumia chaguo za kukokotoa moja, tulikata maandishi katika PHP kama inavyohitajika ili kutatua kazi.

Mbinu zisizo za kawaida

Ikiwa hatuzingatii safu nzima ya vitendaji vya mfuatano wa lugha, jozi ya chaguo za kukokotoa hulipuka()/implode() na chaguo za kukokotoa str_replace() huturuhusu kutatua matatizo yasiyo ya kawaida ya taarifa ya mfuatano wa "kukata".


Matokeo ya swali la MySQL daima ni rasmi katika muundo wa habari iliyorejeshwa, na maudhui ya sehemu (vipengele) vya matokeo daima huamuliwa na chanzo, yaani, msanidi programu ambaye ameunda hifadhidata.

Huu ni mfano fulani, lakini hujibu swali haswa: jinsi ya kupunguza laini katika PHP wakati kuna mistari mingi. trm() chaguo la kukokotoa ni la pekee, na historia yake iliamuliwa na kazi wakati hakukuwa na habari nyingi, na hakukuwa na haja ya kukata kitu chochote isipokuwa herufi zisizo muhimu.

Leo habari huzunguka kwa kiasi kikubwa na kukata mstari kwa mstari sio lazima tu, bali pia hauna maana.

Kugawanyika katika vipengele pia ni chaguo, kama kukata kamba. PHP itatumia explode() kiotomatiki kukata maandishi makubwa katika mistari mingi inayohitajika. Kwa kutumia str_replace() chaguo za kukokotoa - yaani, kubadilisha tukio moja la herufi na lingine - unaweza kufikia athari sawa.


Mienendo na kiasi cha habari ambacho kinahitaji kusindika ni, kwanza kabisa, suluhisho la kutosha, na sio matumizi ya kazi moja maalum.

Ushauri wa mtandaoni juu ya matengenezo ya tovuti huko Ulyanovsk: ICQ# 179104682

Jinsi ya kupunguza kamba ya Cyrillic kwa kutumia PHP

Tarehe ya kuchapishwa kwa makala: 06/01/2014

Kuunda tovuti huko Ulyanovsk yenye utendaji mzito na mwingiliano na hifadhidata mara nyingi huhitaji kwamba mstari fulani hauzidi kiasi fulani maalum. Hii inaweza kuhitajika, kwa mfano, kupunguza idadi ya herufi zinazotumwa kwa seva ya hifadhidata kwa kutumia uga wa ingizo, ili kuonyesha sehemu tu ya mstari kwenye ukurasa wa tovuti (kwa mfano, wakati wa kuunda matangazo ya habari ya urefu sawa katika orodha) na kwa kazi nyingine nyingi.

Jambo la kwanza ambalo waandaaji wa programu za novice hukutana na kazi ya PHP substr. Kwa kweli inatumika kupunguza nyuzi na syntax yake ni rahisi sehemu ndogo(kamba, int start [, int length]), ambapo int start ni herufi ya kuanzia ambapo kuanzia kukata uzi, na kigezo cha hiari cha urefu wa int ni idadi ya herufi za kukata. Walakini, inaweza kuonekana kuwa ya kushangaza kwa mpanga programu asiye na uzoefu ikiwa atajaribu kuitumia kupunguza kamba ya Kisirilli katika PHP. Kama matokeo ya substr kufanya kazi na kamba ya Cyrillic, alama ya kuuliza, au alama ya kuuliza katika almasi, inaweza kuonekana mwishoni mwa kamba iliyopunguzwa, na kwa sababu fulani jumla ya herufi zilizopunguzwa ni mara mbili chini ya ile iliyokuwa. iliyoainishwa katika kigezo cha urefu wa ndani. Kwa nini hii inatokea?

Ukweli ni kwamba wahusika wa Kirusi katika UTF-8 wana ukubwa wa ka 2, na wahusika wa Kilatini ni 1 tu. Kazi ya PHP substr inakata kamba kwa baiti, sio kwa herufi. Ikiwa kamba ina herufi za Kilatini, basi hakuna kitu cha kushangaza kinachotokea, kwani idadi ya wahusika inalingana na idadi ya ka. Na wakati wa kufanya kazi na alfabeti ya Cyrillic, ambapo kila mhusika huchukua ka 2, paramu ya urefu wa int inaweza kuanguka kwa urahisi ndani ya "katikati" ya mhusika, na kwa sababu hiyo, mwishoni mwa mstari uliokatwa, wakati wa kutoa, tutafanya. ona alama ya kuuliza iliyoharibika kwenye almasi.

Jinsi ya kukata kwa usahihi sehemu ya mstari na alfabeti ya Cyrillic?

Suluhisho la tatizo hili kwa kweli ni rahisi sana. Kwa upunguzaji sahihi wa PHP wa kamba iliyo na herufi za Cyrillic, unahitaji kutumia kazi ya PHP iconv_substr.

Syntax ya kazi ni rahisi:

iconv_substr (kamba, int start [, int urefu [, charset]])

Mfano wa kupunguza mfuatano wa lugha ya Kirusi hadi vibambo 80 kwa usimbaji wa UTF-8 kwa kutumia iconv_substr:

$new_string = iconv_substr ($string, 0 , 80 , "UTF-8");

Nambari sifuri katika mfano inamaanisha kuwa hesabu ya herufi 80 huanza kutoka mwanzo wa mstari.

Tovuti inachukua mabadiliko ya kutosha katika kurasa zake kulingana na kifaa ambacho mgeni hutumia. Ikiwa kuhusiana na vipengele vya kuzuia na vya ndani karibu kila kitu kinaweza "otomatiki" kwa kutumia CSS na JavaScript, basi wakati wa kuzalisha maudhui na kutumia hifadhidata, ni vigumu kufanya bila upande wa seva.

Kwa kawaida tunapunguza mstari katika PHP wakati kipengee cha mpangilio wa HTML kina kikomo kwa idadi ya herufi zinazoonekana, lakini hii ni kazi ya kibinafsi.

Suluhisho la jadi

Moja ya kazi maarufu na zinazotumiwa mara kwa mara ni substr(). Vigezo viwili au vitatu hupitishwa kwake:

  • kamba ya chanzo;
  • nafasi ya kuanza ($ iPos);
  • urefu wa kamba ndogo ya kukatwa ($iLen).

Kigezo cha mwisho kinaweza kuachwa. Ikiwa vigezo viwili tu vimetolewa: matokeo ya substr() yatakuwa kamba ndogo, kutoka nafasi ya kuanza ($iPos) hadi mwisho wa mfuatano wa asili. Ikiwa vigezo vitatu vilipitishwa, basi tunapunguza kamba ya PHP kutoka nafasi ya kuanza ($iPos) hadi urefu maalum ($iLen).

Kuchagua tu mwanzo wa kamba kwa kutumia kazi hii inawezekana wakati parameter ya kwanza ni sifuri. Ikiwa nafasi ya awali ni hasi, basi PHP itazingatia herufi katika nafasi $iPos kutoka mwisho wa mfuatano kuwa mwanzo ambapo tunapunguza kamba. Herufi katika mstari zimehesabiwa kuanzia sufuri.

Kazi maalum

PHP inazingatia kazi ya "kukata kamba" (kwa maana pana) katika muktadha: kutoka pande zote mbili. Kihistoria, hii ni trim() kazi, ambayo inalenga kuondoa herufi zisizo muhimu:

  • nafasi;
  • mapumziko ya mstari;
  • kurudi kwa gari;
  • tabulation;
  • wahusika tupu

kutoka ncha zote mbili za mstari. Hiki ni kipengele maarufu sana, hasa wakati wa kufanya kazi na hifadhidata, uteuzi ambao mara nyingi una nafasi nyingi. Kutumia explode() kazi pia mara nyingi husababisha herufi za ziada mwanzoni na mwisho wa kamba.

Walakini, sio wasanidi wote wanaotumia trim() kitendakazi kwa uwezo wake kamili. Kwa kazi ya "punguza kamba", PHP inapendekeza kutumia kigezo cha pili cha chaguo la kukokotoa, ambapo unaweza kutaja seti yoyote ya wahusika ambayo inapaswa kuondolewa kwenye mfuatano wa chanzo.

Ni muhimu kwamba wahusika waondolewe tu kutoka mwanzo na mwisho wa kamba ya chanzo. Ni muhimu kwamba kwa kuendesha masks ya wahusika kufutwa na mlolongo wa kazi ndogo.

  • Kwanza, tunakata kamba ya PHP mask moja kwa wakati mmoja.
  • Kisha mwingine.
  • Kisha ya tatu.

Kama matokeo ya mlolongo wa chaguo za kutumia chaguo za kukokotoa moja, tulikata maandishi katika PHP kama inavyohitajika ili kutatua kazi.

Mbinu zisizo za kawaida

Ikiwa hatuzingatii safu nzima ya vitendaji vya mfuatano wa lugha, jozi ya chaguo za kukokotoa hulipuka()/implode() na chaguo za kukokotoa str_replace() huturuhusu kutatua matatizo yasiyo ya kawaida ya taarifa ya mfuatano wa "kukata".

Matokeo ya swali la MySQL daima ni rasmi katika muundo wa habari iliyorejeshwa, na maudhui ya sehemu (vipengele) vya matokeo daima huamuliwa na chanzo, yaani, msanidi programu ambaye ameunda hifadhidata.

Huu ni mfano fulani, lakini hujibu swali haswa: jinsi ya kupunguza laini katika PHP wakati kuna mistari mingi. trm() chaguo la kukokotoa ni la pekee, na historia yake iliamuliwa na kazi wakati hakukuwa na habari nyingi, na hakukuwa na haja ya kukata kitu chochote isipokuwa herufi zisizo muhimu.

Leo habari huzunguka kwa kiasi kikubwa na kukata mstari kwa mstari sio lazima tu, bali pia hauna maana.

Kugawanyika katika vipengele pia ni chaguo, kama kukata kamba. PHP itatumia explode() kiotomatiki kukata maandishi makubwa katika mistari mingi inayohitajika. Kwa kutumia str_replace() chaguo za kukokotoa - yaani, kubadilisha tukio moja la herufi na lingine - unaweza kufikia athari sawa.

Mienendo na kiasi cha habari ambacho kinahitaji kusindika ni, kwanza kabisa, suluhisho la kutosha, na sio matumizi ya kazi moja maalum.