Bir simli xüsusi sözü ehtiva edirmi?

Düşün:

 $a = 'How are you?'; if ($a contains 'are') echo 'true'; 

Yəqin ki, bir kodunu yaza bilirəm, bir if ($a contains 'are') yazmaq üçün doğru yol nədir?

2667
06 дек. Charles Yeung tərəfindən soruşulan 06 Dek 2010-12-06 16:14 '10 at 16:14 2010-12-06 16:14
@ 39 cavab
  • 1
  • 2

Bir strpos() baş verməsini tapmaq üçün istifadə olunan strpos() funksiyasından istifadə edə bilərsiniz:

 $a = 'How are you?'; if (strpos($a, 'are') !== false) { echo 'true'; } 

Qeyd edək ki, !== false istifadə etmək !== false ; strpos() iğne simasının saman strpos() və ya iynə tapılmayan məntiqi dəyərini qaytarır. 0-dan etibarlı ofset və 0-dan "yanlış" olduğu üçün, !strpos($a, 'are') kimi daha sadə konstruksiyalardan istifadə edə bilmərik.

5841
06 дек. Cavab codaddict Dek 06 tərəfindən verilir 2010-12-06 16:15 '10 at 4:15 PM 2010-12-06 16:15

Normal ifadələrdən istifadə edə bilərsiniz, digər istifadəçilər tərəfindən qeyd edildiyi kimi, strpos ilə müqayisədə sözləri uyğunlaşdırmaq daha xeyirlidir, məsələn, xərc, qayğı, bax və s. Söz sərhədlərinin köməyi ilə bu sadəcə müntəzəm ifadələrdən qaçınmaq olar.

Sadə bir matç belə bir şeyə bənzəyir:

border=0
 $a = 'How are you?'; if (preg_match('/\bare\b/',$a)) echo 'true'; 

Performans baxımından, strpos təxminən üç dəfə daha sürətli olur və eyni zamanda milyonlarla müqayisə preg_match , preg_match üçün 1,5 saniyə çəkdi və strpos üçün 0,5 saniyə çəkdi.

496
06 дек. Cavab Breezer 06 dekabrda verilir. 2010-12-06 16:15 '10 at 4:15 PM 2010-12-06 16:15

Strpos istifadə edin:

 if (strpos($a, 'are') !== false) echo 'true'; 
245
06 дек. Milan Babuškov tərəfindən verilmiş cavab 06 dekabr 2010-12-06 16:15 '10 at 4:15 PM 2010-12-06 16:15

Burada bu vəziyyətlərdə faydalı olan kiçik bir faydalı xüsusiyyət var.

 // returns true if $needle is a substring of $haystack function contains($needle, $haystack) { return strpos($haystack, $needle) !== false; } 
216
18 авг. Cavab ejunker 18 aug tərəfindən verilir . 2011-08-18 21:54 '11 at 21:54 2011-08-18 21:54

Bu cədvəllərin əksəriyyəti substrinqin simvolunuzda nümayiş olunacaq olub-olmaması barədə məlumat verəcəkdir, ancaq siz, xüsusi bir söz və substrinq deyilsinizsə, adətən istədiyiniz nədir.

Fərq nədir? Substratlar başqa sözlərlə göstərilə bilər:

  • "sahə" nin başında "var"
  • "sonunda" "quş"
  • "tarifləri" nin ortasında "var"

Bunu azaltmanın bir yolu, söz sərhədləri ( \b ) ilə birləşərək müntəzəm ifadəni istifadə etməkdir:

 function containsWord($str, $word) { return !!preg_match('#\\b' . preg_quote($word, '#') . '\\b#i', $str); } 

Bu metod yuxarıda göstərildiyi kimi yanlış pozitivlərə malik deyil, lakin bəzi marginal hallar var. Söz sərhədləri, az , az , 0-9 və ya _ az eyni olmayacaq sözlər olmadan ( \W ) simvollarla üst-üstə düşür. Bu, ədədlər və alt çərçivələr sözcük simvolları hesab olunur və bu kimi skriptlər işləməyəcəkdir:

  • "Sizcə" nədir? "
  • "lol u dunno wut" olan "is" 4? "

Daha dəqiq bir şeyə ehtiyacınız varsa, ingilis dilində sözdiziminin sintaktik analizi başlamanız lazımdır və bu, olduqca böyük bir qurddur (və sözsüzlüyün düzgün istifadə edilməsini nəzərdə tutur, hər zaman verilmiş deyildir).

122
03 сент. Cavab FtDRbwLXw6 03 sep verilir . 2014-09-03 02:23 '14 da 2:23 2014-09-03 02:23

Bir simli başqa bir simli var olub olmadığını müəyyən etmək üçün PHP funksiyasından strpos () istifadə edə bilərsiniz.

int strpos ( string $haystack, mixed $needle [, int $offset = 0 ] )

 <?php $haystack = 'how are you'; $needle = 'are'; if (strpos($haystack,$needle) !== false) { echo "$haystack contains $needle"; } ?> 

DİQQƏT:

Aradığınız iynə samanlığın başlanğıcında olarsa, işə yaramayan == müqayisə etsəniz, o, 0-ə qayıdır.

A == işarəsi bir müqayisə edir və sola dəyişən / ifadə / sabitin sağa dəyişən / ifadə / sabitlə eyni dəyəri olub olmadığını yoxlayır.

=== işarəsi, iki dəyişənin / ifadənin / sabitin AND eyni tipdə olduğunu yoxlamaq üçün bir müqayisə edir, yəni. Hər ikisi simlərdir və ya hər ikisi tamsayıdır.

103
06 дек. Cavab 06 dekabrda Jose Vega tərəfindən verilir. 2010-12-06 17:06 '10 at 17:06 2010-12-06 17:06

strpos() baxın :

 <?php $mystring = 'abc'; $findme = 'a'; $pos = strpos($mystring, $findme); // Note our use of ===. Simply, == would not work as expected // because the position of 'a' was the 0th (first) character. if ($pos === false) { echo "The string '$findme' was not found in the string '$mystring'."; } else { echo "The string '$findme' was found in the string '$mystring',"; echo " and exists at position $pos."; } ?> 
57
06 дек. Cavab Haim Evgi tərəfindən Dek 06 2010-12-06 16:16 '10 at 16:16 2010-12-06 16:16

strstr() və ya stristr() istifadə edərək, axtarışınız strstr() , başqa variant olacaqdır.

56
06 дек. Cavab glutorange 06 dekabr verilir . 2010-12-06 17:16 '10 at 17:16 2010-12-06 17:16

Bir "yanlış" və "doğru" problemdən qaçmaq istəyirsinizsə, substr_count istifadə edə bilərsiniz:

 if (substr_count($a, 'are') > 0) { echo "at least one 'are' is present!"; } 

Bu, strpos-dan bir az yavaşdır, lakin uyğunlaşdıqları problemləri aradan qaldırır.

38
09 июля '13 в 11:38 2013-07-09 11:38 Cavab Alan Piralla tərəfindən 09.07.2013 11:38 tarixində verilir

stripos() istifadə edərək vəziyyətə həssas bir dəlil istifadə stripos() :

 if (stripos($string,$stringToSearch) !== false) { echo 'true'; } 
38
24 окт. 24 oktyabrda Şankar Damodaran tərəfindən verilmiş cavab . 2013-10-24 10:30 '13 saat 10:30 'da 2013-10-24 10:30

SamGoody və Lego Stormtroopr şərhlərinə cavab verin.

Axtarış nəticələrini bir neçə sözlə yaxınlıq / uyğunluq əsasında qiymətləndirmək üçün PHP alqoritmini axtarırsınızsa, PHP ilə axtarış nəticələrini yaratmaq üçün tez və asan bir yol gəlir:

strpos() , preg_match() , strstr() və ya stristr() kimi digər boolean axtarış üsulları ilə problemlər

  1. bir neçə söz axtarmaq bilməz
  2. pozulmamış nəticələr

Vektor sahəsi modelinə əsaslanan PHP metodu və tf-idf (tərs sənədlərin tezliyi):

Bu çətin, lakin təəccüblü asanlıqla səslənir.

Bir xətt içində bir neçə söz tapmaq istəyirsənsə, əsas problem hər birinin ağırlığını necə təyin edəcəyik?

Bir xəttdə şərtləri çəkə bilsəydik, necə bir nümayəndənin bir xəttdən necə olacağına əsaslanaraq nəticələrini sorguya ən uyğun şəkildə sifariş verə bilərik.

SQL tam mətnli axtarışın necə işlədiyindən çox uzaq bir vektor modelinin ideyasıdır :

 function get_corpus_index($corpus = array(), $separator=' ') { $dictionary = array(); $doc_count = array(); foreach($corpus as $doc_id => $doc) { $terms = explode($separator, $doc); $doc_count[$doc_id] = count($terms); // tf–idf, short for term frequency–inverse document frequency, // according to wikipedia is a numerical statistic that is intended to reflect // how important a word is to a document in a corpus foreach($terms as $term) { if(!isset($dictionary[$term])) { $dictionary[$term] = array('document_frequency' => 0, 'postings' => array()); } if(!isset($dictionary[$term]['postings'][$doc_id])) { $dictionary[$term]['document_frequency']++; $dictionary[$term]['postings'][$doc_id] = array('term_frequency' => 0); } $dictionary[$term]['postings'][$doc_id]['term_frequency']++; } //from http://phpir.com/simple-search-the-vector-space-model/ } return array('doc_count' => $doc_count, 'dictionary' => $dictionary); } function get_similar_documents($query='', $corpus=array(), $separator=' '){ $similar_documents=array(); if($query!='' $words=explode($separator,$query); $corpus=get_corpus_index($corpus, $separator); $doc_count=count($corpus['doc_count']); foreach($words as $word) { if(isset($corpus['dictionary'][$word])){ $entry = $corpus['dictionary'][$word]; foreach($entry['postings'] as $doc_id => $posting) { //get term frequency–inverse document frequency $score=$posting['term_frequency'] * log($doc_count + 1 / $entry['document_frequency'] + 1, 2); if(isset($similar_documents[$doc_id])){ $similar_documents[$doc_id]+=$score; } else{ $similar_documents[$doc_id]=$score; } } } } // length normalise foreach($similar_documents as $doc_id => $score) { $similar_documents[$doc_id] = $score/$corpus['doc_count'][$doc_id]; } // sort from high to low arsort($similar_documents); } return $similar_documents; } 

CASE 1

 $query = 'are'; $corpus = array( 1 => 'How are you?', ); $match_results=get_similar_documents($query,$corpus); echo '<pre>'; print_r($match_results); echo '</pre>'; 

RESULT

 Array ( [1] => 0.52832083357372 ) 

CASE 2

 $query = 'are'; $corpus = array( 1 => 'how are you today?', 2 => 'how do you do', 3 => 'here you are! how are you? Are we done yet?' ); $match_results=get_similar_documents($query,$corpus); echo '<pre>'; print_r($match_results); echo '</pre>'; 

NƏTİCƏLƏR

 Array ( [1] => 0.54248125036058 [3] => 0.21699250014423 ) 

CASE 3

 $query = 'we are done'; $corpus = array( 1 => 'how are you today?', 2 => 'how do you do', 3 => 'here you are! how are you? Are we done yet?' ); $match_results=get_similar_documents($query,$corpus); echo '<pre>'; print_r($match_results); echo '</pre>'; 

NƏTİCƏLƏR

 Array ( [3] => 0.6813781191217 [1] => 0.54248125036058 ) 

Bir çox irəliləyiş var, lakin model, strpos() , preg_match() , strstr() və ya stristr() kimi strpos() operatorları olmayan təbii sorgulardan yaxşı nəticələr əldə etməyə imkan verir.

NOTA BENE

Istədiyiniz sözləri axtarmaqdan əvvəl artıqlıqlılığı aradan qaldırın

  • indeksin ölçüsünü azaldır və daha az saxlama tələbi ilə nəticələnir

  • az disk I / O

  • daha sürətli endeksleme və buna görə də daha sürətli axtarış.

1. Normalləşmə

  • Bütün mətni kiçik işə çevirmək

2. Durdurma səyinin çıxarılması

  • Həqiqi mənası olmayan mətnlərdən sözləri çıxarın (məsələn, "və", "və ya", "", "üçün" və s.)

3. Sözün əvəzi

  • Sözləri eyni və ya oxşar mənaya malik olanlarla dəyişdirin. (məsələn: "aclıq" və "aclıq" hallarını "aclıq" ilə əvəz etmə)

  • Əlavə alqoritmik tədbirlər (qartopu) sözləri daha vacib mənasına çatdırmaq üçün həyata keçirilə bilər.

  • Renk adlarını onaltılıq bərabərliklə dəyişdirmək

  • Dəqiqliyi azaltmaqla sayısal dəyərlərin azaldılması mətni normallaşdırmaq üçün başqa üsuldur.

RESURSLAR

38
15 окт. RafaSashi 15 oct tərəfindən verilən cavabı . 2014-10-15 22:21 '14 saat 10:21 'da 2014-10-15 22:21

Digər variant isə strstr () funksiyasından istifadə etməkdir. Kimi bir şey:

 if (strlen(strstr($haystack,$needle))>0) { // Needle Found } 

Qeyd: strstr () funksiyası böyük / kiçik duyarlıdır. Case-sensitive search üçün, stristr () funksiyasından istifadə edin.

30
20 авг. Cavab verilir YashG99 20 aug. 2012-08-20 19:20 '12 saat 19:20 'da 2012-08-20 19:20

Buradakı cavabların heç biri, strpos , strstr və bənzər funksiyaları istifadə edən bir az çox təsirli simli funksiyaları qeyd etdilər (2015-05-08).

Əsasən, Alman, Fransız, Portuqal, İspan və s. Kimi bəzi dillərə aid simvollarla söz tapmaqda probleminiz varsa. (Məsələn: ä, é, ô, ç, º, ñ), mb_ ilə bir funksiyadan əvvəl ola bilər. Buna görə alınan cavab mb_strpos və ya mb_stripos (halda həssaslıq üçün) istifadə edəcək:

 if (mb_strpos($a,'are') !== false) { echo 'true'; } 

Bütün məlumatların 100% UTF-8 mb_ , mb_ funksiyalarını istifadə edə bilərsiniz.

Mükəmməl Minimum Hər bir proqram tərtibatçısı Unicode və xarakter dəstləri (heç bir bəhanə!) Haqqında bilməlidir ki, tamamilə əmin Joel Spolsky .

28
08 мая '15 в 19:18 2015-05-08 19:18 Cavab Armfoot'ta 08 May '18 ' də saat 19:18' da verilir
 if (preg_match('/(are)/', $a)) { echo 'true'; } 
25
10 окт. cavab verildi joan16v Oct 10. 2013-10-10 14:22 '13 'da 14:22' de 2013-10-10 14:22

PHP-də bir simli xüsusi substreri ehtiva etdiyini yoxlamaq üçün ən yaxşı yoldur, belə bir sadə köməkçi funksiyanı istifadə etməkdir:

 function contains($haystack, $needle, $caseSensitive = false) { return $caseSensitive ? (strpos($haystack, $needle) === FALSE ? FALSE : TRUE): (stripos($haystack, $needle) === FALSE ? FALSE : TRUE); } 

Şərhlər:

  • strpos halında həssas bir substrinqin ilk baş verməsinin mövqeyini tapır.
  • stripos bir substrinqin ilk baş verməsinin mövqeyini tapır və böyük / aşağı stripos deyildir.
  • myFunction($haystack, $needle) === FALSE ? FALSE : TRUE myFunction($haystack, $needle) === FALSE ? FALSE : TRUE , myFunction həmişə boolean dəyərini qaytarmasını təmin edir və substrinq indeksi 0 olduğunda gözlənilməz bir davranış təmin edir.
  • $caseSensitive ? A : B $caseSensitive ? A : B , $caseSensitive dəyərindən asılı olaraq, işi etmək üçün strpos və ya stripos seçir.

Nəticə:

 var_dump(contains('bare','are')); // Outputs: bool(true) var_dump(contains('stare', 'are')); // Outputs: bool(true) var_dump(contains('stare', 'Are')); // Outputs: bool(true) var_dump(contains('stare', 'Are', true)); // Outputs: bool(false) var_dump(contains('hair', 'are')); // Outputs: bool(false) var_dump(contains('aren\'t', 'are')); // Outputs: bool(true) var_dump(contains('Aren\'t', 'are')); // Outputs: bool(true) var_dump(contains('Aren\'t', 'are', true)); // Outputs: bool(false) var_dump(contains('aren\'t', 'Are')); // Outputs: bool(true) var_dump(contains('aren\'t', 'Are', true)); // Outputs: bool(false) var_dump(contains('broad', 'are')); // Outputs: bool(false) var_dump(contains('border', 'are')); // Outputs: bool(false) 
22
21 февр. John Slegers tərəfindən verilmiş cavab 21 Feb. 2016-02-21 21:39 '16 saat 21:39 'da 2016-02-21 21:39

Aşağıdakı funksiya da işləyir və digər funksiyalardan asılıdır; PHP ilə yalnız inline manipulyasiyalar istifadə edir. Şəxsən mən bunu məsləhət görmürəm, amma necə işlədiyini görə bilərsiniz:

 <?php if (!function_exists('is_str_contain')) { function is_str_contain($string, $keyword) { if (empty($string) || empty($keyword)) return false; $keyword_first_char = $keyword[0]; $keyword_length = strlen($keyword); $string_length = strlen($string); // case 1 if ($string_length < $keyword_length) return false; // case 2 if ($string_length == $keyword_length) { if ($string == $keyword) return true; else return false; } // case 3 if ($keyword_length == 1) { for ($i = 0; $i < $string_length; $i++) { // Check if keyword first char == string first char if ($keyword_first_char == $string[$i]) { return true; } } } // case 4 if ($keyword_length > 1) { for ($i = 0; $i < $string_length; $i++) {  if (($string_length + 1 - $i) >= $keyword_length) { // Check if keyword first char == string first char if ($keyword_first_char == $string[$i]) { $match = 1; for ($j = 1; $j < $keyword_length; $j++) { if (($i + $j < $string_length)  $keyword[$j] == $string[$i + $j]) { $match++; } else { return false; } } if ($match == $keyword_length) { return true; } // end if first match found } // end if remaining part } else { return false; } // end for loop } // end case4 } return false; } } 

Test:

 var_dump(is_str_contain("test", "t")); //true var_dump(is_str_contain("test", "")); //false var_dump(is_str_contain("test", "test")); //true var_dump(is_str_contain("test", "testa")); //flase var_dump(is_str_contain("a----z", "a")); //true var_dump(is_str_contain("a----z", "z")); //true var_dump(is_str_contain("mystringss", "strings")); //true 
22
19 сент. Cavab Jason OOO 19 sentyabr tərəfindən verilir. 2013-09-19 17:00 '13 saat 17:00 'da 2013-09-19 17:00' də

Siz strstr funksiyasından istifadə edə bilərsiniz:

 $haystack = "I know programming"; $needle = "know"; $flag = strstr($haystack, $needle); if ($flag){ echo "true"; } 

Daxili funksiyanı istifadə etmədən:

 $haystack = "hello world"; $needle = "llo"; $i = $j = 0; while (isset($needle[$i])) { while (isset($haystack[$j])  ($needle[$i] != $haystack[$j])) { $j++; $i = 0; } if (!isset($haystack[$j])) { break; } $i++; $j++; } if (!isset($needle[$i])) { echo "YES"; } else{ echo "NO "; } 
20
27 авг. Cavab Arshid KV tərəfindən verilir 27 av . 2015-08-27 19:59 '15 'də saat 19:59 ' da

Bununla əlaqədar problemim vardı və nəhayət öz həllini yaratmağa qərar verdim. Normal ifadə mexanizmindən istifadə etmədən:

 function contains($text, $word) { $found = false; $spaceArray = explode(' ', $text); $nonBreakingSpaceArray = explode(chr(160), $text); if (in_array($word, $spaceArray) || in_array($word, $nonBreakingSpaceArray) ) { $found = true; } return $found; } 

Əvvəlki həllər sözün başqa bir ön kod olaraq istifadə edilməsinə cavab verməyəcəyini görə bilərsiniz. Məsələn istifadə edin:

 $a = 'How are you?'; $b = "a skirt that flares from the waist"; $c = "are"; 

Yuxarıdakı nümunələrlə, $a$b hər ikisi $a $c ehtiva edir, amma funksiyanı yalnız $a $c ehtiva etdiyini söyləyə bilərsiniz.

19
18 марта '14 в 18:49 2014-03-18 18:49 Cavab Decebal tərəfindən 18 Mart '14 'də 18:49 2014-03-18 18:49 ' də verilir

Qısa müddətli versiya

 $result = false!==strpos($a, 'are'); 
14
13 марта '15 в 11:29 2015-03-13 11:29 Cavab Somwang Souksavat'd 13 mart '15 'də saat 11:29' də verilir. 2015-03-13 11:29

Bir söz tapmaq üçün başqa bir sözün bir hissəsi ola biləcək bir sıra məktubların görünüşü deyil, yaxşı bir həll olardı.

 $string = 'How are you?'; $array = explode(" ", $string); if (in_array('are', $array) ) { echo 'Found the word'; } 
14
17 апр. Cavab DJC 17 apr tərəfindən verilir . 2015-04-17 09:31 '15 'də saat 09:31' da 2015-04-17 09:31

Strstr ()stristr () istifadə edərək simvoldan bir sözün görünüşünü tapmaq üçün başqa bir üsul belədir:

 <?php $a = 'How are you?'; if (strstr($a,'are')) // Case sensitive echo 'true'; if (stristr($a,'are')) // Case insensitive echo 'true'; ?> 
14
13 марта '14 в 8:48 2014-03-13 08:48 cavab 13 may 2014-cü il saat 8 : 00-da Sadıqasan tərəfindən verilmişdir 2014-03-13 08:48

substr_count >0 olduğu halda substr_count check istifadə edən cavablar dəsti. Lakin if sıfır saxta olduğu kimi qəbul if , bu çekdən qaçın və birbaşa yaza bilərsiniz:

 if (substr_count($a, 'are')) { 

Əlavə olub-olmadığını yoxlamaq üçün əlavə edin ! operator:

 if (!substr_count($a, 'are')) { 
13
21 марта '16 в 15:39 2016-03-21 15:39 Cavab T30 21 Mart '16 'da 15:39 2016-03-21 15:39' da verilir

Bir halda laqeyd istifadə etməlisiniz, belə ki, daxil edilən dəyər small və ya caps , vacib deyildir.

 <?php $grass = "This is pratik joshi"; $needle = "pratik"; if (stripos($grass,$needle) !== false) {  echo 'Contains word'; }else{ echo "does NOT contain word"; } ?> 

Burada şerbet halda (kiçik / papaq) nəzərə almadan heystack bir iynə tapır.

PHPcode nümunəsi çıxış yolu ilə

13
03 марта '15 в 22:02 2015-03-03 22:02 Cavab Pratik C Joshi tərəfindən verilir 03.03.2014 22:02 2015-03-03 22:02

Bu üç yolla edilə bilər:

  $a = 'How are you?'; 

1- stristr ()

  if (strlen(stristr($a,"are"))>0) { echo "true"; // are Found } 

2- strpos ()

  if (strpos($a, "are") !== false) { echo "true"; // are Found } 

3- preg_match ()

  if( preg_match("are",$a) === 1) { echo "true"; // are Found } 
13
19 дек. Cavab 19 dekabrda Şaşank Sinqh tərəfindən verilir . 2015-12-19 13:57 '15 at 13:57 2015-12-19 13:57
 $a = 'how are you'; if (strpos($a,'are')) { echo 'true'; } 
11
09 окт. cavabı Cavab 09 oktyabr verilir . 2012-10-09 19:17 '12 at 7:17 pm 2012-10-09 19:17

Bəlkə də belə bir şey istifadə edə bilərsiniz:

 <?php findWord('Test all OK'); function findWord($text) { if (strstr($text, 'ok')) { echo 'Found a word'; } else { echo 'Did not find a word'; } } ?> 
11
07 апр. Mathias Stavrou tərəfindən verilmiş cavab 07 Apr 2015-04-07 15:51 '15 at 15:51 2015-04-07 15:51

Yalnız bir xəttin başqa bir xəttdə olduğunu yoxlamaq preg_match() istifadə etməyin. strstr() onlar daha sürətli olacaq kimi strpos() və ya strstr() istifadə edin. ( http://in2.php.net/preg_match )

 if (strpos($text, 'string_name') !== false){ echo 'get the string'; } 
10
05 апр. Cavab Vinod Joshi tərəfindən verilir 05 Apr 2014-04-05 14:17 '14 da 14:17 2014-04-05 14:17

Bir simli bir neçə xüsusi sözdən ibarət olub olmadığını yoxlamaq istəyirsinizsə, bunu edə bilərsiniz:

 $badWords = array("dette", "capitale", "rembourser", "ivoire", "mandat"); $string = "a string with the word ivoire"; $matchFound = preg_match_all("/\b(" . implode($badWords,"|") . ")\b/i", $string, $matches); if ($matchFound) { echo "a bad word has been found"; } else { echo "your string is okay"; } 

Bu, məsələn, e-poçt göndərərkən spamdan qaçınmaq üçün faydalıdır.

10
14 окт. Julien 14 oktyabrda cavab verdi 2015-10-14 17:40 '15 at 5:40 pm 2015-10-14 17:40

Bu strpos funksiyası yaxşı işləyir, ancaq bir paraqrafda sözün case-insensitive yoxlanılmasını etmək istəyirsinizsə PHP stripos funksiyasından istifadə edə bilərsiniz.

Məsələn,

 $result = stripos("I love PHP, I love PHP too!", "php"); if ($result === false) { // Word does not exist } else { // Word exists } 

Dəyişən halda lövhənin ilk baş verməsinin mövqeyini tapın.

Sətirdə söz yoxdur, əksinə, sözün mövqeyini qaytarır.

9
31 мая '15 в 8:52 2015-05-31 08:52 cavab 31 may 15: 00-da Akshay Khale tərəfindən verilir. 08:52 2015-05-31 08:52

Strpos 0 indeks dəyəri kimi qayıda bilər, çünki eyni / qeyri-eyni operatorları istifadə etməlisiniz. Üçlü operatorlar istəsəniz, aşağıdakılardan istifadə etməyi düşünün (bir az geri görünürəm, razıyam):

 echo FALSE === strpos($a,'are') ? 'false': 'true'; 
9
15 окт. Cavab Şapeshifter 15 okt verilir . 2014-10-15 22:47 '14 'da 22:47 2014-10-15 22:47
  • 1
  • 2

Tags bağlı digər suallar və ya bir sual verir