PHP istifadə edərək kiril sətrini necə kəsmək olar. PHP sətirinin kəsilməsi: asan yollar PHP sətirindəki son simvolları kəsin

Adaptiv veb sayt tərtibatı ziyarətçinin istifadə etdiyi cihazdan asılı olaraq onun səhifələrində adekvat dəyişiklikləri nəzərdə tutur. Blok və daxili elementlərə gəldikdə, demək olar ki, hər şeyi CSS və JavaScript istifadə edərək "avtomatlaşdırmaq" olarsa, məzmun yaradarkən və verilənlər bazalarından istifadə edərkən server tərəfi olmadan etmək çətindir.

Biz adətən PHP-də sətri kəsirik, o zaman HTML tərtibat elementinin görünən simvolların sayına məhdudiyyət qoyulur, lakin bu, şəxsi tapşırıqdır.

Ənənəvi həll

Ən populyar və tez-tez istifadə olunan funksiyalardan biri substr() funksiyasıdır. Ona iki və ya üç parametr ötürülür:

    mənbə sətri; başlanğıc mövqeyi ($iPos); kəsiləcək alt sətirin uzunluğu ($iLen).

Sonuncu parametr buraxıla bilər. Yalnız iki parametr verilirsə: substr() nəticəsi başlanğıc mövqeyindən ($iPos) orijinal sətirin sonuna qədər alt sətir olacaq. Əgər üç parametr ötürülübsə, onda biz PHP sətirini başlanğıc mövqeyindən ($iPos) müəyyən edilmiş uzunluğa ($iLen) kəsirik.

Bu funksiyadan istifadə edərək sətirin yalnız başlanğıcını seçmək birinci parametr sıfır olduqda mümkündür. Əgər ilkin mövqe mənfi olarsa, onda PHP sətrin sonundan $iPos mövqeyində olan simvolu sətri kəsdiyimiz başlanğıc hesab edəcək. Sətirdəki simvollar sıfırdan başlayaraq nömrələnir.

Xüsusi funksiya

PHP “sətir kəsmək” (geniş mənada) vəzifəsini kontekstdə nəzərdən keçirir: hər iki tərəfdən. Tarixən bu, əhəmiyyətsiz simvolları silmək məqsədi daşıyan trim() funksiyasıdır:

    boşluqlar; xətt fasilələri; vaqonun qaytarılması; cədvəl tərtibi; null simvollar

xəttin hər iki ucundan. Bu, çox populyar bir xüsusiyyətdir, xüsusən verilənlər bazası ilə işləyərkən, seçimində çox vaxt çox boşluq var. explode() funksiyasından istifadə də çox vaxt sətrin əvvəlində və sonunda əlavə simvollarla nəticələnir.

Bununla belə, heç də bütün tərtibatçılar trim() funksiyasından tam potensialından istifadə etmirlər. “Sətirin kəsilməsi” tapşırığı üçün PHP funksiyanın ikinci parametrindən istifadə etməyi təklif edir, burada mənbə sətirindən xaric edilməli olan hər hansı simvol dəstini təyin edə bilərsiniz.


Simvolların yalnız mənbə sətirinin əvvəlindən və sonundan silinməsi vacibdir. Silinəcək simvolların maskalarını və alt tapşırıqların ardıcıllığını manipulyasiya etməklə vacibdir.

    Əvvəlcə PHP sətirini bir dəfə maskanı kəsdik. Sonra başqa biri. Sonra üçüncüdə.

Bir funksiyadan istifadə etmək üçün seçimlərin ardıcıllığı nəticəsində biz tapşırığı həll etmək üçün PHP-də mətni tələb olunan şəkildə kəsdik.

Qeyri-standart üsullar

Dilin sətir funksiyalarının bütün diapazonunu nəzərə almasaq, explode()/implode() və str_replace() funksiya cütlüyü sətir məlumatının “kəsilməsi” ilə bağlı qeyri-standart məsələləri həll etməyə imkan verir.


MySQL sorğusunun nəticəsi qaytarılan məlumatın strukturunda həmişə formal olur və nəticənin sahələrinin (elementlərinin) məzmunu həmişə mənbə, yəni verilənlər bazasını tərtib edən tərtibatçı tərəfindən müəyyən edilir.

Bu xüsusi bir nümunədir, lakin bu suala dəqiq cavab verir: PHP-də çoxlu sətir olduqda xətti necə kəsmək olar. trm() funksiyası xüsusi bir funksiyadır və onun tarixi çox məlumat olmadıqda tapşırıqlarla müəyyən edilirdi və əhəmiyyətsiz simvollardan başqa heç bir şeyi kəsməyə ehtiyac qalmadı.

Bu gün informasiya böyük həcmdə tirajlanır və sətir-sətir kəsmək nəinki lazımsız, həm də məntiqsizdir.

Komponentlərə bölmək də bir simli kəsmək kimi bir seçimdir. PHP bir böyük mətni bir çox tələb olunan sətirlərə kəsmək üçün avtomatik olaraq explode() istifadə edəcək. str_replace() funksiyasından istifadə etməklə - yəni simvolların bir baş verməsini digəri ilə əvəz etməklə - oxşar effekt əldə edə bilərsiniz.


Emal edilməli olan məlumatların dinamikası və həcmi, ilk növbədə, bir xüsusi funksiyanın istifadəsi deyil, adekvat həll yoludur.

Ulyanovskda veb-saytın saxlanması üzrə onlayn məsləhət: ICQ# 179104682

PHP istifadə edərək kiril sətrini necə kəsmək olar

Məqalənin dərc tarixi: 06/01/2014

Ulyanovskda ciddi funksionallıq və verilənlər bazası ilə qarşılıqlı əlaqə ilə bir veb sayt yaratmaq çox vaxt müəyyən bir xəttin müəyyən edilmiş həcmi keçməməsini tələb edir. Bu, məsələn, giriş sahəsindən istifadə edərək verilənlər bazası serverinə ötürülən simvolların sayını məhdudlaşdırmaq, sayt səhifəsində xəttin yalnız bir hissəsini göstərmək üçün (məsələn, siyahıda bərabər hündürlükdə xəbər elanları yaratarkən) lazım ola bilər. və bir çox başqa vəzifələr üçün.

Təcrübəsiz proqramçıların qarşılaşdıqları ilk şey PHP funksiyası substr. O, əslində sətirləri kəsmək üçün istifadə olunur və onun sintaksisi sadədir substr(string, int start [, int length]), burada int start sətri kəsməyə başlamaq üçün başlanğıc simvoldur və isteğe bağlı parametr int uzunluğu kəsiləcək simvolların sayıdır. Bununla belə, təcrübəsiz proqramçı ondan PHP-də kiril sətirini kəsmək üçün istifadə etməyə cəhd edərsə, bu qəribə görünə bilər. Substr-ın kiril sətri ilə işləməsi nəticəsində kəsilmiş sətirin sonunda sual işarəsi və ya almazda sual işarəsi görünə bilər və nədənsə kəsilmiş simvolların ümumi sayı əvvəlkindən iki dəfə azdır. int uzunluq parametrində göstərilmişdir. Bu niyə baş verir?

Fakt budur ki, UTF-8-də rus simvolları 2 bayt, Latın simvolları isə cəmi 1 baytdır. PHP substr funksiyası sətri simvollarla deyil, baytlarla kəsir. Əgər sətir Latın hərflərindən ibarətdirsə, onda qəribə heç nə baş vermir, çünki simvolların sayı baytların sayı ilə üst-üstə düşür. Hər simvolun 2 bayt tutduğu kiril əlifbası ilə işləyərkən int uzunluq parametri asanlıqla simvolun “ortasına” düşə bilər və nəticədə kəsmə xəttinin sonunda çıxış edərkən biz almazdakı o bədbəxt sual işarəsinə baxın.

Kiril əlifbası ilə xəttin bir hissəsini necə düzgün kəsmək olar?

Bu problemin həlli əslində çox sadədir. Kiril simvollarını ehtiva edən sətri düzgün PHP ilə kəsmək üçün siz PHP funksiyasından istifadə etməlisiniz iconv_substr

Funksiya sintaksisi sadədir:

iconv_substr (string, int start [, int length [, charset]])

iconv_substr istifadə edərək UTF-8 kodlaması ilə rusdilli sətri 80 simvola qədər kəsmək üçün nümunə:

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

Nümunədə sıfır rəqəmi o deməkdir ki, 80 simvolun sayı sətrin əvvəlindən başlayır.

Sayt ziyarətçinin istifadə etdiyi cihazdan asılı olaraq öz səhifələrində adekvat dəyişiklikləri nəzərdə tutur. Blok və daxili elementlərə gəldikdə, demək olar ki, hər şeyi CSS və JavaScript istifadə edərək "avtomatlaşdırmaq" olarsa, məzmun yaradarkən və verilənlər bazalarından istifadə edərkən server tərəfi olmadan etmək çətindir.

Biz adətən PHP-də sətri kəsirik, o zaman HTML tərtibat elementinin görünən simvolların sayına məhdudiyyət qoyulur, lakin bu, şəxsi tapşırıqdır.

Ənənəvi həll

Ən populyar və tez-tez istifadə olunan funksiyalardan biri substr() funksiyasıdır. Ona iki və ya üç parametr ötürülür:

  • mənbə sətri;
  • başlanğıc mövqeyi ($iPos);
  • kəsiləcək alt sətirin uzunluğu ($iLen).

Sonuncu parametr buraxıla bilər. Yalnız iki parametr verilirsə: substr() nəticəsi başlanğıc mövqeyindən ($iPos) orijinal sətirin sonuna qədər alt sətir olacaq. Əgər üç parametr ötürülübsə, onda biz PHP sətirini başlanğıc mövqeyindən ($iPos) müəyyən edilmiş uzunluğa ($iLen) kəsirik.

Bu funksiyadan istifadə edərək sətirin yalnız başlanğıcını seçmək birinci parametr sıfır olduqda mümkündür. Əgər ilkin mövqe mənfi olarsa, onda PHP sətrin sonundan $iPos mövqeyində olan simvolu sətri kəsdiyimiz başlanğıc hesab edəcək. Sətirdəki simvollar sıfırdan başlayaraq nömrələnir.

Xüsusi funksiya

PHP “sətir kəsmək” (geniş mənada) vəzifəsini kontekstdə nəzərdən keçirir: hər iki tərəfdən. Tarixən bu, əhəmiyyətsiz simvolları silmək məqsədi daşıyan trim() funksiyasıdır:

  • boşluqlar;
  • xətt fasilələri;
  • vaqonun qaytarılması;
  • cədvəl tərtibi;
  • null simvol

xəttin hər iki ucundan. Bu, çox populyar bir xüsusiyyətdir, xüsusən verilənlər bazası ilə işləyərkən, seçimində çox vaxt çox boşluq var. explode() funksiyasından istifadə də çox vaxt sətrin əvvəlində və sonunda əlavə simvollarla nəticələnir.

Bununla belə, heç də bütün tərtibatçılar trim() funksiyasından tam potensialından istifadə etmirlər. “Sətirin kəsilməsi” tapşırığı üçün PHP funksiyanın ikinci parametrindən istifadə etməyi təklif edir, burada mənbə sətirindən xaric edilməli olan hər hansı simvol dəstini təyin edə bilərsiniz.

Simvolların yalnız mənbə sətirinin əvvəlindən və sonundan silinməsi vacibdir. Silinəcək simvolların maskalarını və alt tapşırıqların ardıcıllığını manipulyasiya etməklə vacibdir.

  • Əvvəlcə PHP sətirini bir dəfə maskanı kəsdik.
  • Sonra başqa biri.
  • Sonra üçüncüdə.

Bir funksiyadan istifadə etmək üçün seçimlərin ardıcıllığı nəticəsində biz tapşırığı həll etmək üçün PHP-də mətni tələb olunan şəkildə kəsdik.

Qeyri-standart üsullar

Dilin sətir funksiyalarının bütün diapazonunu nəzərə almasaq, explode()/implode() və str_replace() funksiya cütlüyü sətir məlumatının “kəsilməsi” ilə bağlı qeyri-standart məsələləri həll etməyə imkan verir.

MySQL sorğusunun nəticəsi qaytarılan məlumatın strukturunda həmişə formal olur və nəticənin sahələrinin (elementlərinin) məzmunu həmişə mənbə, yəni verilənlər bazasını tərtib edən tərtibatçı tərəfindən müəyyən edilir.

Bu xüsusi bir nümunədir, lakin bu suala dəqiq cavab verir: PHP-də çoxlu sətir olduqda xətti necə kəsmək olar. trm() funksiyası xüsusi bir funksiyadır və onun tarixi çox məlumat olmadıqda tapşırıqlarla müəyyən edilirdi və əhəmiyyətsiz simvollardan başqa heç bir şeyi kəsməyə ehtiyac qalmadı.

Bu gün informasiya böyük həcmdə tirajlanır və sətir-sətir kəsmək nəinki lazımsız, həm də məntiqsizdir.

Komponentlərə bölmək də bir simli kəsmək kimi bir seçimdir. PHP bir böyük mətni bir çox tələb olunan sətirlərə kəsmək üçün avtomatik olaraq explode() istifadə edəcək. str_replace() funksiyasından istifadə etməklə - yəni simvolların bir baş verməsini digəri ilə əvəz etməklə - oxşar effekt əldə edə bilərsiniz.

Emal edilməli olan məlumatların dinamikası və həcmi, ilk növbədə, bir xüsusi funksiyanın istifadəsi deyil, adekvat həll yoludur.

Funksiya substr($string, $start, $length) , burada $string mətnli dəyişəndir, $start geri sayımın başladığı simvoldur (0 ilk simvol kimi alınır) və $length simvolların sayıdır. seçilmiş mətn.

$text = "Nümunə və mətn";

$first = substr($text,0,6); // 0-dan başlayaraq 6 simvol göstərir, ən birinci
echo $first; // "Nümunə" çıxaracaq.

$ikinci = alt str($text,8,3); // 8-dən başlayan 3 simvolu göstərir
echo $ikinci; // "və" çap edəcək
Əgər simvolların sayı (2-ci rəqəm) parametrini təyin etməsəniz, funksiya qalan bütün simvolları göstərəcək.

$text = "Nümunə və mətn";

$third = substr($text,8); // 8-dən başlayan BÜTÜN simvolları göstərir
echo $üçüncü; // "və mətni" çap edəcək

mb_substr PHP funksiyasından istifadə edərək rusca mətnin kəsilməsi

Funksiya mb_substr kimi eyni vəzifələri yerinə yetirir substr, həm də çoxbaytlı kodlaşdırmaları idarə etməyə qadirdir. Buna görə də, rus mətni vəziyyətində, sizin üçün faydalı olacaq mb_substr. Eyni işləyir

$text = "Nümunə mətn";

$first = mb_substr($text,0,6,"UTF-8"); // 0-dan başlayaraq 6 simvolu göstərir
// Diqqət! Mənbə mətnin kodlaşdırılmasını göstərin! Bu vəziyyətdə utf-8
echo $first; // "Nümunə" göstərəcək

$ikinci = mb_substr($text,7,6,"UTF-8"); // 7-dən başlayan 6 simvolu göstərir
echo $ikinci; // "mətn" çıxaracaq
Nəzərə alın ki, kiril (rus mətni) vəziyyətində kodlaşdırmanı funksiyanın sonunda göstərmək daha yaxşıdır. Nümunədə ən populyar variant istifadə olunur - UTF-8

Mətnin sonundan kəsilməsi

Mətni sonundan kəsmək istəyirsinizsə, bunu etmək üçün mətn seçiminin hansı simvoldan başladığını göstərən dəyişən üçün mənfi rəqəm göstərəcəyik.

$text = "Sprite və Fanta";

$first = substr($text,-6,5); // Sondan 6-dan başlayaraq 5 simvolu göstərir
echo $first; //"Fant" çap edəcək

Kəsmədən sonra biz də mətn əlavə edirik

Dəyişəni mətnlə kəsdikdən sonra sonuna əlavə mətn əlavə edin

$example = "Mətn mətni mətn mətni";

$nümunə = alt str($misal,0,9); // 0-dan başlayaraq 9 simvolu göstərir
$example .= "daha çox...";
echo $example; // "Mətn mətni daha çox..." göstərəcək.
Əksinə, başlanğıcda bir qeyd edə bilərsiniz və sonra mətni kəsə bilərsiniz

$text = "Əmi";

$example = "Corc və Maykl";
$nümunə = alt str($misal,0,6); // 0-dan başlayaraq 6 simvolu göstərir
$mətn .= $nümunə;
echo $mətn; //"Corc əmi" çap edəcək

Mətnin ilk boşluğa kəsilməsi

$text = "Salam dünya!";
echo substr($text, 0, strpos($text, " ")); // "Salam" çap edir

PHP Words ilə mətni kəsmək üçün hazır PHP funksiyası

funksiya kəsimi($string, $length)(
$string = mb_substr($string, 0, $length,"UTF-8"); // bütün kodlaşdırmaları kəsin və işləyin və mənbə kodlamasını göstərin
$pozisiya = mb_strrpos($string, " ", "UTF-8"); // axırıncı boşluğun yerini müəyyənləşdirin. Biz sözləri buna görə ayırırıq.
$string = mb_substr($string, 0, $pozisiya, "UTF-8"); // Dəyişəni mövqeyə görə kəsin
$string qaytarın;
}

$text = "Şimal müharibəsi 1721-ci ildə başa çatdı";
echo cut($mətn, 17); // "bitdi" sözünün bir hissəsi olmadan "Şimal müharibəsi" göstəriləcək

Bir sıra vasitəsilə sözlərlə kəsə bilərsiniz...

$text = "Microsoft 1975-ci ildə Bill Qeyts tərəfindən təsis edilib.";

$massiv = partlatmaq(" ",$mətn); // sətri massivdə emal edin
$massiv = massiv_dilimi($massiv,0,5); // ilk 5 söz elementini seçin
$newtext = implode(" ",$massiv); // massivi yenidən sətirə çevirin

Echo $newtext;//"Microsoft-u Bill Gates tərəfindən təsis edilib" göstəriləcək

 

Oxumaq faydalı ola bilər: