php sətirinin baş verməsini tapın. PHP istifadə edərək sətirdə alt sətirin tapılması
PHP digər sətirlərdə sətirləri tapmaq üçün müxtəlif variantlar təklif edir. Adi funksiyalar var. Normal ifadələrdən istifadə etmək mümkündür. Tərtibatçı sintaksis qaydalarına uyğun olaraq məlumat axtarışının öz versiyasını inkişaf etdirə bilər.
Sətirlərin axtarışı istədiyiniz yerdə istədiyiniz simvolun və ya sətirin mövcudluğunu təsdiqləməklə məhdudlaşmır. Obyekt sim kimi çıxış edə bilər - bu, sadəcə simdən daha geniş məlumat anlayışıdır. Axtarış, aşkarlama anı əlavə emal tələb etməkdənsə, dərhal qərarla müşayiət olunduqda xüsusilə təsirli olur.
Əsas axtarış funksiyası
Axtarış - strpos() funksiyası. Onun nəticəsi ya Boolean dəyəridir, ya da axtarılan (ikinci parametr) sətirdə (birinci parametr) mövqedən (üçüncü parametr) baş vermə mövqeyidir. Sonuncu parametr göstərilməyibsə, axtarış sətirin sıfır mövqeyindən həyata keçirilir.
Bu nümunədə, sətirdə PHP axtarışı nümunə olaraq tək simvoldan istifadə etməklə göstərilir. Simvol əvəzinə sətirdən istifadə edə bilərsiniz. PHP proqramçıya sətirlərin ölçüsündə məhdudiyyət qoymur, lakin ağlabatan məhdudiyyətlər vacibdir.
Siz sətirlər daxilində sətirləri hərf-həssas şəkildə, ilk və ya sonuncu hadisədən başlayaraq axtara və müntəzəm ifadələrdən istifadə edə bilərsiniz. Bütün digər hallarda olduğu kimi, skriptin yerləşdiyi səhifənin kodlaşdırılması vacibdir.
Bəzi hallarda sadəcə strpos() əvəzinə iconv_strpos() variantından istifadə etmək məntiqlidir. Əksər hallarda PHP sətirində alt sətir axtarışı mükəmməl dəqiq nəticələr verəcək: səhifənin və sətirin kodlaşdırılmasını eyni kodlaşdırmada saxlamaq kifayətdir.
Standart yanaşmanın xüsusiyyətləri
Əgər PHP sətirində alt sətir axtarışında heç bir nəticə yoxdursa: axtardığınız mövcud deyil və nəticə boolean dəyər olacaq. Bununla belə, əgər axtarılan alt sətir sıfır mövqeyindən başlayırsa, bu, nəticənin müqayisəsi və təhlili əməliyyatlarında vurğulanmalıdır. Nəticə 0 olduqda, bu, yanlış nəticədən çox da uzaq deyil.
JavaScript-dən fərqli olaraq, PHP sətirlərə gəldikdə daha mühafizəkardır və bu günə qədər strings stringsdir. Onlarla işləmək sətir funksiyalarıdır: sadə strpos səviyyəsindən müntəzəm ifadələrdən istifadə edərək mürəkkəb olanlara qədər.
Axtarmaq lazımdır:
- alqoritmin istiqaməti haqqında qərar vermək;
- axtardığınızı başqa bir şeylə əvəz edin;
- hadisəni yoxlamaq;
- statistika sayğacını artırmaq və s.
Alqoritmin adi məntiqi budur ki, JavaScript daha da irəli getdi və “sətirləri” obyekt kimi tanıdı. Ancaq təcrübədə tək tanınmaq kifayət deyil. Əgər biz “sətir” anlayışından mücərrəd etsək və onu real obyekt kimi başa düşsək, PHP bizə “sətirdə sətir axtarmaq” sualını real metod kontekstində formalaşdırmağa imkan verəcək, məsələn, alma ola bilər. yetişmiş, təkcə qırmızı olanda deyil.
Bir alma təsvirində "qırmızı" sözünün klassik axtarışı meyvənin yetişməsi ilə bağlı etibarlı cavabı təmin etmir. Əgər alma sətirlə deyil, obyektlə təmsil olunursa, onda PHP sətirdə strpos kimi deyil, real obyektin metodu kimi axtaracaq. Bununla belə, strpos funksiyasının metodun əsas hissəsində istifadə ediləcəyinə heç bir zəmanət yoxdur.
Qeyri-standart həllərdə standart funksiyalar
Adi (insan) məlumat emalının bir xüsusiyyəti: mövqe, bir şeyin olduğu yer, məqsəd və ya qərar olduqda vacibdir. Bütün digər hallarda, bir şeyin harada olmasının əhəmiyyəti yoxdur, onun təyin edilməsi və sonrakı hərəkətlər üçün əsas olması vacibdir.
Axtarış trim, str_replace və başqaları funksiyalarında dolayı şəkildə həyata keçirilir. Partlayış/implode və massiv manipulyasiyasını birlikdə istifadə edərkən maraqlı axtarış variantı mövcuddur.
Əgər PHP-nin bütün funksiyalarından istifadə etsəniz, sətirdə axtarış asanlıqla semantika götürür, adi sintaksisdən kənara çıxır və real məna əldə etmək üçün səbəb olur. Mənanı manipulyasiya etmək insan üçün daha tanış, alqoritm üçün daha təhlükəsizdir və sətirləri obyektlərə çevirmək maşın kodlarından müasir proqramlaşdırma dilləri dünyasına keçid kimidir.
Sətirlər veb inkişaf problemlərini həll edərkən daim işləməli olduğunuz çox vacib bir məlumat növüdür. Bu məqalə PHP tərtibatçısının həyatını asanlaşdıracaq 10 çox faydalı texnikanı təsvir edir.
Html teqlərinin sətirdən avtomatik silinməsi
İstifadəçi tərəfindən doldurulmuş formalardan istifadə edərkən bəzən bütün lazımsız etiketləri silmək lazımdır. Bu tapşırıq strip_tags() funksiyasından istifadə etməklə asanlıqla həll olunur:
$text = strip_tags($input, "");
$start və $end arasında mətn əldə edilir
Belə bir funksiya tərtibatçının arsenalında olmalıdır: o, orijinal xətti, başlanğıcı və sonu alır və $start və $end arasında olan mətni qaytarır.
GetBetween funksiyası($content,$start,$end)( $r = partlatmaq($start, $content); if (isset($r))( $r = partlatmaq($end, $r); qaytar $r; ) "" qaytarın)
URL-nin hiperlinkə çevrilməsi
WordPress bloqunda şərh formasına URL yerləşdirsəniz, o, avtomatik olaraq hiperlinkə çevriləcək. Eyni funksiyanı veb saytınızda və ya veb tətbiqinizdə tətbiq etmək istəyirsinizsə, aşağıdakı kodu istifadə edə bilərsiniz:
$url = "Jean-Baptiste Jung (http://www.webdevcat.com)"; $url = preg_replace("#http://(+)#", " ", $url);
Twitter üçün mətnin 140 simvol massivinə bölünməsi
Bəlkə bunu bilirsən Twitter 140 simvoldan çox olmayan mesajları qəbul edir. Tətbiqinizi məşhur sosial mesajlaşma saytı ilə əlaqələndirmək planlarınız varsa, mesajları 140 simvola kəsən xüsusiyyət çox güman ki, uyğun olacaq.
Funksiya bölmək_to_text($to,$text)( $total_length = (140 - strlen($to)); $text_arr = partlatmaq(" ",$text); $i=0; $message=""; foreach ($text_arr) $word kimi)( if (strlen($message[$i] . $word . " ")<= $total_length){ if ($text_arr == $word){ $message[$i] .= $word; } else { $message[$i] .= $word . " "; } } else { $i++; if ($text_arr == $word){ $message[$i] = $word; } else { $message[$i] = $word . " "; } } } return $message; }
URL-nin sətirdən çıxarılması
Bir çox insanlar trafik əldə etmək və ya rəy yaratmaq üçün blog şərhlərində URL-ləri tərk edirlər. Bu cür bağlantılar bloqu çirkləndirir və onların sayı çox olarsa, sahibinin məyusluğuna səbəb ola bilər. Beləliklə, növbəti funksiya çox faydalı olacaq!
$string = preg_replace("/\b(https?|ftp|fayl):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*/ i", "", $string);
Bir simli şlaka çevirmək
SEO məqsədlərinə uyğun bir şlak (daimi keçid üçün) yaratmaq lazımdırmı? Aşağıdakı funksiya parametr kimi sətir götürür və SEO-ya uyğun şlak qaytarır. Sadə və effektiv!
Funksiya slug($str)( $str = strtolower(trim($str)); $str = preg_replace("/[^a-z0-9-]/", "-", $str); $str = preg_replace ("/-+/", "-", $str qaytarın;
CSV faylının təhlili
CSV (Komadan ayrılmış dəyərlər) faylları məlumatların saxlanması və ötürülməsi üçün sadə üsuldur və belə faylları PHP-də təhlil etmək olduqca asandır. Mənə inanmırsan? Aşağıdakı kod CSV faylının işlənməsini nümayiş etdirir:
$fh = fopen("contacts.csv", "r"); while($line = fgetcsv($fh, 1000, ",")) ( əks-səda "Əlaqə: ($line)"; )
Başqa bir sətirdə bir sətir tapmaq
Əgər sətir başqa bir sətirdə varsa və onu tapmaq lazımdırsa, problem sadədir:
Funksiyanın tərkibində($str, $content, $ignorecase=true)( if ($ignorecase)( $str = strtolower($str); $content = strtolower($content); ) strpos($content,$str) qaytarılır? doğru yalan)
Sətin müəyyən bir nümunə ilə başlamasının yoxlanılması
Java kimi bəzi proqramlaşdırma dillərində sətirin müəyyən nümunə ilə başlayıb-başlamadığını yoxlamağa imkan verən startWith metodu/funksiyası var. Təəssüf ki, PHP-də belə sadə daxili funksiya yoxdur.
Ancaq bunu özümüz üçün edə bilərik və çox sadə::
Funksiya String_Begins_With($needle, $haystack) ( qaytarın (alt($haystack, 0, strlen($needle))==$needle); )
vurğulayırıq sətirdən e-poçt
Spamerlərin e-poçt ünvanlarınızı necə əldə etdiyini heç düşünmüsünüzmü? Bu sadədir. Onlar veb səhifəni (məsələn, forumdan) götürür və e-poçt ünvanlarını çıxarmaq üçün html kodunu təhlil edirlər. Aşağıdakı kod bir sətir parametr kimi götürür və içindəki bütün e-poçtları çap edir. Zəhmət olmasa bu kodu spam üçün istifadə etməyin!
Funksiya extract_emails($str)( // Bütün e-poçtları sətirdən çıxaran adi ifadə: $regexp = "/()+\@(()+\.)+((2,4))+/i"; preg_match_all ($regexp, $str, $m return isset($m) : array( ) $test_string = "Test string...); [email protected] Digər formatların yoxlanılması: [email protected]; foobar
strripos - Sətirdə hərflərə həssas olmayan alt sətirin sonuncu dəfə baş verməsinin mövqeyini tapın
Təsvir
Saman tayasında iynənin son dəfə baş verməsinin ədədi mövqeyini tapın.
-dən fərqli olaraq strpos(), strripos() böyük hərflərə həssasdır.
Parametrlər
Axtarış üçün sətir.
Əgər iynə sətir deyilsə, o, tam ədədə çevrilir və simvolun sıra dəyəri kimi tətbiq edilir. Bu davranış PHP 7.3.0-dan etibarən köhnəlib və ona etibar etmək qətiyyən tövsiyə edilmir. Nəzərdə tutulan davranışdan asılı olaraq, iynə ya açıq şəkildə simə atılmalı, ya da açıq şəkildə çağırılmalıdır. chr() yerinə yetirilməlidir.
Sıfır və ya müsbət olarsa, axtarış ot tayasının ilk ofset baytlarını atlayaraq soldan sağa aparılır.
Mənfi olarsa, axtarış saman tayasının son ofset baytlarını atlayaraq və iynənin ilk baş verməsini axtararaq sağdan sola aparılır.
Bu, son ofset baytından əvvəl iynənin son baş verməsini effektiv şəkildə axtarır.
Dəyərləri qaytarın
Saman tayasının başlanğıcına nisbətən iynənin mövcud olduğu mövqeyi qaytarır (axtarış istiqamətindən və ya ofsetdən asılı olmayaraq).
Qeyd: Sətir mövqeləri 1 deyil, 0-dan başlayır.
Qaytarır YANLIŞ iynə tapılmadıqda.
Xəbərdarlıq
Bu funksiya Boolean qaytara bilər YANLIŞ, lakin eyni zamanda qiymətləndirilən qeyri-Boolean dəyəri də qaytara bilər YANLIŞ. Əlavə məlumat üçün Booleans bölməsini oxuyun. Bu funksiyanın qaytarılması dəyərini yoxlamaq üçün === operatorundan istifadə edin.
Nümunələr
Nümunə №1 Sadə strripos() misal
$haystack = "ababcd" ;
$iynə = "aB" ;
$pos = strripos ($saman tayası, $iynə);
əgər ($pos === false ) (
echo "Bağışlayın, ($haystack ) içərisində ($needle ) tapmadıq" ;
) başqa (
echo "Təbrik edirik!\n" ;
echo "Biz sonuncunu ($iynəni) ($haystack ) mövqeyində ($pos ) tapdıq" ;
}
?>
PHP strpos funksiyası verilmiş sətirdə alt sətir tapmaq üçün istifadə olunur. Axtarılan alt sətirin ilk baş verməsinin ədədi dəyərini qaytarır.
Strpos istifadə sintaksisi
PHP strpos funksiyası aşağıdakı kimi istifadə olunur:
$pozisiya = strpos($verilən_sətir, $axtarış_sətri);
Qeyd: strpos funksiyası ilə axtarış zamanı böyük hərf həssasdır. Beləliklə, "Test" və "test" açar sözlərinin axtarışı fərqli nəticələr verəcəkdir.
Mövqelərin sayılması 1 deyil, 0-dan başlayır.
Demo versiyalardan istifadə edərək, verilmiş alt sətir və istifadəçinin daxil etdiyi dəyəri axtarmaq üçün bu funksiyanın istifadəsini nümayiş etdirəcəyəm.
strpos funksiyasından istifadənin sadə nümunəsi
PHP strpos funksiyasının necə işlədiyini nümayiş etdirmək üçün axtarış dəyərlərindən istifadə etdiyim aşağıdakı nümunəyə baxın:
Onlayn demo və kodlara baxın
PHP kodu:
"; echo " Verilmiş substr tapıldı: $position"; ) ?>
strpos PHP nümunəsi:
Sətirdə axtarış termini var: 'strpos'! Verilmiş alt sətir tapıldı: 10
İstifadəçinin daxil etdiyi termini axtarmaq üçün strpos-dan istifadə nümunəsi
Bu üsul müəyyən ssenarilərdə faydalı ola bilər. Məsələn, forma müəyyən sözlərin daxil edilməsinə icazə vermədikdə.
Bundan əlavə, axtarış üçün istifadəçi tərəfindən göstərilən sözün mənbə sətirində olub olmadığını yoxlaya bilərsiniz. Buna əsaslanaraq cavab şəklində müəyyən nəticələr çıxara bilərsiniz.
Bu demoda istifadəçi mətn sahəsinə termin daxil edə bilər. Düymə kliklədikdən sonra orijinal sətirdə alt sətir olub-olmadığını yoxlamaq üçün strpos funksiyası işə salınır. Ekranda aşağıdakı mesaj görünəcək:
Demo üçün aşağıdakı mənbə xəttindən istifadə etdim:
$source_string = "Bu demoda mən strpos istifadə edərək sətirdə axtarış termini olub-olmadığını yoxlamaq üçün istifadəçinin daxil etdiyi axtarış terminindən istifadə edirəm!";
Fərqli hərflər daxil etməyə və ya sözlər axtarmağa çalışın ki, bu funksiya yalançı olub. Həmçinin, fərqi görmək üçün terminləri böyük və ya kiçik hərflərlə daxil etməyə çalışın.
Bunun üçün aşağıdakı PHP strpos utf 8 nümunəsi istifadə edilmişdir:
"; if ($posistion === false) ( echo "Mənbə sətirində: "$search_term" yoxdur!"; ) else ( echo "Səttdə axtarış termini var: "$search_term"!"; echo " Verilmiş alt sətir tapıldı: $position"; ) echo "