Bir dizenin belirli bir kelime i├žerip i├žermedi─čini nas─▒l kontrol ederim?


Al─▒nan cevaba git


D├╝┼č├╝nmek:

 $a = 'How are you?';

if ($a contains 'are')
    echo 'true';
 

Yukar─▒daki kodun bende oldu─čunu varsayal─▒m, ifadeyi yazman─▒n do─čru yolu if ($a contains 'are') nedir?


2663









Cevap say─▒s─▒n─▒ say: 30






Sen kullanabilirsiniz strpos() ba┼čka birinin i├žine bir dize olu┼čumunu bulmak i├žin kullan─▒l─▒r i┼člevi:

 $a = 'How are you?';

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

Kullan─▒m─▒n─▒n !== false kas─▒tl─▒ oldu─čuna dikkat edin (ne i┼če yaramayacak ne != false de === true olmayacak); strpos() ─░─čne dizesinin samanl─▒k dizesinde ba┼člad─▒─č─▒ yeri veya false i─čne bulunmazsa boolean'─▒ d├Ând├╝r├╝r . 0 ge├žerli bir uzakl─▒k ve 0 "falsey" oldu─ču i├žin, gibi daha basit yap─▒lar kullanamay─▒z !strpos($a, 'are') .


6463







D├╝zenli ifadeler kullanabilirsiniz, strpos di─čer kullan─▒c─▒lar taraf─▒ndan belirtildi─či gibi kelime e┼čle┼čtirmesi i├žin daha iyidir , ├╝cret, dikkat, bak─▒┼č vb. Gibi karakter dizeleri i├žin de do─čru olur. Bu, s├Âzc├╝k ifadeleri kullan─▒larak d├╝zenli ifadede ├Ânlenebilir.

Bunun i├žin basit bir e┼čle┼čme ┼čuna benzeyebilir:

 $a = 'How are you?';

if (preg_match('/\bare\b/', $a)) {
    echo 'true';
}
 

Performans taraf─▒nda, strpos yakla┼č─▒k ├╝├ž kat daha h─▒zl─▒ ve akl─▒mda, bir milyonu bir seferde kar┼č─▒la┼čt─▒rd─▒─č─▒mda, preg_match bitirmek 1.5 saniye s├╝rd├╝ ve strpos bunun i├žin 0.5 saniye s├╝rd├╝.

D├╝zenleme: Dizenin herhangi bir b├Âl├╝m├╝n├╝ aramak i├žin, sadece kelimelere g├Âre de─čil, normal bir ifadeyi kullanman─▒z─▒ tavsiye ederim.

 $a = 'How are you?';
$search = 'are y';
if(preg_match("/{$search}/i", $a)) {
    echo 'true';
}
 

i Normal ifadenin sonunda bunu istemiyorsan─▒z, bunu d─▒┼čar─▒ b─▒rakabilir, b├╝y├╝k k├╝├ž├╝k harf duyars─▒z olmas─▒ normal ifadeyi de─či┼čtirir.

┼×imdi, $ search string herhangi bir ┼čekilde sterilize edilmedi─činden, baz─▒ durumlarda bu olduk├ža problemli olabilir, yani, baz─▒ durumlarda, $search onlar gibi davranabilecek baz─▒ string ekleyebilecekleri bir kullan─▒c─▒ giri┼čiymi┼č gibi kontrol├╝ ge├žemeyebilir. baz─▒ farkl─▒ d├╝zenli ifadeler ...

Ayr─▒ca, burada ├že┼čitli d├╝zenli ifadelerin a├ž─▒klamalar─▒n─▒ test etmek ve g├Ârmek i├žin harika bir ara├ž Regex101

Her iki i┼člev k├╝mesini tek bir ├žok ama├žl─▒ i┼člevde (se├žilebilir b├╝y├╝k / k├╝├ž├╝k harf duyarl─▒l─▒─č─▒ dahil) birle┼čtirmek i├žin a┼ča─č─▒daki gibi bir ┼čey kullanabilirsiniz:

 function FindString($needle,$haystack,$i,$word)
{   // $i should be "" or "i" for case insensitive
    if (strtoupper($word)=="W")
    {   // if $word is "W" then word search instead of string in string search.
        if (preg_match("/\b{$needle}\b/{$i}", $haystack)) 
        {
            return true;
        }
    }
    else
    {
        if(preg_match("/{$needle}/{$i}", $haystack)) 
        {
            return true;
        }
    }
    return false;
    // Put quotes around true and false above to return them as strings instead of as bools/ints.
}
 

563







─░┼čte bu gibi durumlarda yararl─▒ olan k├╝├ž├╝k bir yard─▒mc─▒ fonksiyon

 // returns true if $needle is a substring of $haystack
function contains($needle, $haystack)
{
    return strpos($haystack, $needle) !== false;
}
 

239







Bu cevaplar─▒n ├žo─ču, dizginizde bir alt dizenin g├Âr├╝n├╝p g├Âr├╝nmedi─čini size s├Âylese de, belirli bir s├Âzc├╝k ar─▒yorsan─▒z , bir alt dize de─čil, genellikle istedi─činiz ┼čey bu olmaz .

Fark ne? Alt kelimeler ba┼čka bir deyi┼čle g├Âr├╝nebilir:

  • "Alan" ─▒n ba┼č─▒nda "vard─▒r"
  • "Tav┼čan" ─▒n sonunda "vard─▒r"
  • "├ťcret" ortas─▒nda "vard─▒r"

Bunu hafifletmenin bir yolu, s├Âzc├╝k s─▒n─▒rlar─▒ ( \b ) ile birle┼čtirilmi┼č d├╝zenli bir ifade kullanmakt─▒r :

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

Bu y├Ântem yukar─▒da belirtilen ayn─▒ yanl─▒┼č pozitiflere sahip de─čildir, ancak kendine ├Âzg├╝ baz─▒ kenar durumlar─▒ vard─▒r. S├Âzc├╝k s─▒n─▒rlar─▒ olmayan kelime karakterler (e┼čle┼čtirilecek \W de─čil bir ┼čey olacak), a-z , A-Z , 0-9 , veya _ . Bu, rakamlar─▒n ve alt ├žizgilerin kelime karakterleri olarak say─▒laca─č─▒ ve bunun gibi senaryolar─▒n ba┼čar─▒s─▒z olaca─č─▒ anlam─▒na gelir:

  • "Ne" d├╝┼č├╝n├╝yorsun?
  • "Bunlar" i├žinde "lol u dunno wut bu olanlar 4?"

Bundan daha do─čru bir ┼čey istiyorsan─▒z, ─░ngilizce dili s├Âzdizimi ayr─▒┼čt─▒rma i┼člemine ba┼člamak zorunda kalacaks─▒n─▒z ve bu olduk├ža b├╝y├╝k bir solucan kutusu olabilir (ve yine de her zaman verilemeyen s├Âzdiziminin uygun bir ┼čekilde kullan─▒ld─▒─č─▒n─▒ varsayar).


130







Bir dizenin ba┼čka bir dize i├žerip i├žermedi─čini belirlemek i├žin strpos () i┼člevini kullanabilirsiniz .

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─░KKAT:

Arad─▒─č─▒n─▒z i─čne, samanl─▒─č─▒n ba┼č─▒ndaysa, 0 konumuna geri d├Ânecektir, i┼če yaramayacak bir == kar┼č─▒la┼čt─▒rma yaparsan─▒z, bir ===

Bir == i┼čaret bir kar┼č─▒la┼čt─▒rmad─▒r ve sola de─či┼čken / ifade / sabitin sa─ča de─či┼čken / ifade / sabit ile ayn─▒ de─čerde olup olmad─▒─č─▒n─▒ test eder.

Bir === i┼čaret, iki de─či┼čken / ifadeler / sabitlerin e┼čit olup olmad─▒─č─▒n─▒ g├Ârmek i├žin bir kar┼č─▒la┼čt─▒rmad─▒r, AND yani her ikisi de dizgedir veya her ikisi de tamsay─▒d─▒r.


120







┼×una bak strpos() :

 <?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.";
    }
?>
 

62







Kullan─▒lmas─▒ strstr() veya stristr() arama olmal─▒d─▒r e─čer durum duyars─▒z ba┼čka bir se├ženek olacakt─▒r.


58







SamGoody ve Lego Stormtroopr yorumlar─▒na e┼čler.

Birden fazla kelimenin yak─▒nl─▒─č─▒na / alaka d├╝zeyine g├Âre arama sonu├žlar─▒n─▒ s─▒ralamak i├žin bir PHP algoritmas─▒ ar─▒yorsan─▒z, burada sadece PHP ile arama sonu├žlar─▒ olu┼čturman─▒n h─▒zl─▒ ve kolay bir yolu gelir:

Di─čer boolean arama y├Ântemleriyle ilgili sorunlar gibi strpos() , preg_match() , strstr() veya stristr()

  1. birden fazla kelime arayamaz
  2. sonu├žlar s─▒ralanmam─▒┼č

Vekt├Âr Uzay Modeline ve tf-idf'ye dayanan PHP y├Ântemi (terim s─▒kl─▒─č─▒ - ters belge s─▒kl─▒─č─▒):

Kula─ča zor geliyor ama ┼ča┼č─▒rt─▒c─▒ derecede kolayd─▒r.

Bir dizgede birden fazla s├Âzc├╝k aramak istiyorsak, as─▒l sorun, her birine nas─▒l a─č─▒rl─▒k verece─čimizdir?

Bir dizgede terimleri, dizgilerin bir b├╝t├╝n olarak ne kadar temsili oldu─čuna ba─čl─▒ olarak a─č─▒rl─▒kland─▒rabilirsek, sonu├žlar─▒m─▒z─▒ sorguyla en iyi e┼čle┼čen terimlerle sipari┼č edebiliriz.

Bu, SQL tam metin aramas─▒n─▒n ├žal─▒┼čma bi├žiminden ├žok uzak olmayan bir vekt├Âr uzay modeli fikridir :

 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!=''&&!empty($corpus)){

        $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;
}
 

DAVA 1

 $query = 'are';

$corpus = array(
    1 => 'How are you?',
);

$match_results=get_similar_documents($query,$corpus);
echo '<pre>';
    print_r($match_results);
echo '</pre>';
 

SONUÇ

 Array
(
    [1] => 0.52832083357372
)
 

2. Vaka

 $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>';
 

SONUÇLAR

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

3. VAKA

 $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>';
 

SONUÇLAR

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

Orada yap─▒lacak iyile┼čtirmelerin bol ama modeli gibi ba─čla├žlar yok do─čal sorgular, iyi sonu├žlar alman─▒n bir yol sa─člar strpos() , preg_match() , strstr() veya stristr() .

NOTA BENE

─░ste─če ba─čl─▒ olarak s├Âzc├╝kleri aramadan ├Ânce fazlal─▒─č─▒ ortadan kald─▒rmak

  • bu sayede indeks boyutunu d├╝┼č├╝r├╝r ve daha az depolama gereksinimi ortaya ├ž─▒kar

  • daha az disk G / ├ç

  • daha h─▒zl─▒ indeksleme ve sonu├ž olarak daha h─▒zl─▒ arama.

1. Normalle┼čtirme

  • T├╝m metni k├╝├ž├╝k harfe d├Ân├╝┼čt├╝r

2. Stopword eleme

  • Hi├žbir anlam─▒ olmayan metinden s├Âzc├╝kleri kald─▒r─▒n ('ve', 'veya', '', 'i├žin' vb.)

3. S├Âzl├╝k de─či┼čtirme

  • Kelimeleri, ├Âzde┼č veya benzer bir anlam─▒ olan ba┼čkalar─▒yla de─či┼čtirin. (├Ârn: 'a├ž' ve 'a├ž' ├Ârneklerini 'a├žl─▒k' ile de─či┼čtir)

  • Kelimeleri as─▒l anlamlar─▒na daha da azaltmak i├žin ba┼čka algoritmik ├Ânlemler (kartopu) yap─▒labilir.

  • Renk adlar─▒n─▒n onalt─▒l─▒k e┼čde─čerleriyle de─či┼čtirilmesi

  • Say─▒sal de─čerlerin kesinli─či azaltarak azalt─▒lmas─▒, metni normalle┼čtirmek i├žin ba┼čka yollard─▒r.

KAYNAKLAR


43







Yararlan─▒n harf insensitve e┼čle┼čtirme kullanarak stripos() :

 if (stripos($string,$stringToSearch) !== false) {
    echo 'true';
}
 

41







"Falsey" ve "truthy" probleminden ka├ž─▒nmak istiyorsan─▒z, substr_count komutunu kullanabilirsiniz:

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

Strpos'tan biraz daha yava┼č ama kar┼č─▒la┼čt─▒rma problemlerinden ka├ž─▒n─▒yor.


39







Ba┼čka bir se├ženek strstr () i┼člevini kullanmakt─▒r. Gibi bir ┼čey:

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

Not: strstr () i┼člevi b├╝y├╝k / k├╝├ž├╝k harf duyarl─▒d─▒r. B├╝y├╝k / k├╝├ž├╝k harf duyarl─▒ bir arama i├žin stristr () i┼člevini kullan─▒n.


29







Biraz kullan─▒lan burada cevaplar─▒ hi├žbirinin etkiledi de─čilim strpos , strstr ve benzeri fonksiyonlar s├Âz baytl─▒ Dizge ─░┼člevleri hen├╝z (2015-05-08).

Temel olarak, Almanca, Frans─▒zca, Portekizce, ─░spanyolca vb. Gibi baz─▒ dillere ├Âzg├╝ karakterleri bulmakta sorun ya┼č─▒yorsan─▒z (├Ârne─čin: ├Ą , ├ę , ├┤ , ├ž , ┬║ , ├▒ ), ile i┼člevler mb_ . Bu nedenle, kabul edilen cevap bunun yerine mb_strpos ya da mb_stripos (k├╝├ž├╝k-b├╝y├╝k harf duyarl─▒ e┼čle┼čme i├žin) kullanacakt─▒r :

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

UTF-8ÔÇÖde t├╝m verilerinizin% 100 oldu─čunu garanti edemezseniz , mb_ fonksiyonlar─▒ kullanmak isteyebilirsiniz .

─░yi bir makale oldu─čunu anlamak Mutlak Asgari Her Yaz─▒l─▒m Geli┼čtirici Kesinlikle, Olumlu Unicode ve Karakter K├╝meleri (No Bahane!) Hakk─▒nda bilmeniz gereken taraf─▒ndan Joel Spolsky .


27







 if (preg_match('/(are)/', $a)) {
   echo 'true';
}
 

27







PHP'de, bir dizginin belirli bir alt dize i├žerdi─čini do─črulaman─▒n en iyi yolu, ┼čunun gibi basit bir yard─▒mc─▒ i┼člev kullanmakt─▒r:

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

A├ž─▒klama:

  • strpos B├╝y├╝k / k├╝├ž├╝k harfe duyarl─▒ bir alt dizenin ilk olu┼čumunun bir dizgede konumunu bulur.
  • stripos B├╝y├╝k k├╝├ž├╝k harf duyarl─▒ bir alt dizenin ilk olu┼čumunun bir dizgede konumunu bulur.
  • myFunction($haystack, $needle) === FALSE ? FALSE : TRUE olmas─▒n─▒ sa─člar myFunction alt dize endeksi 0 oldu─čunda her zaman bir boolean ve d├╝zeltmeler beklenmeyen davran─▒┼člar d├Ând├╝r├╝r.
  • $caseSensitive ? A : B de─čerine ba─čl─▒ olarak i┼či strpos veya stripos yapmay─▒ se├žer $caseSensitive .

Çıktı:

 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)
 

24







A┼ča─č─▒daki i┼člev de ├žal─▒┼č─▒r ve ba┼čka hi├žbir i┼čleve ba─čl─▒ de─čildir; sadece yerel PHP dize manip├╝lasyon kullan─▒r. ┼×ahsen, bunu ├Ânermiyorum ama nas─▒l ├žal─▒┼čt─▒─č─▒n─▒ g├Ârebilirsiniz:

 <?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's first char == string's first char
        if ($keyword_first_char == $string[$i]) {
          return true;
        }
      }
    }

    // case 4
    if ($keyword_length > 1) {
      for ($i = 0; $i < $string_length; $i++) {
        /*
        the remaining part of the string is equal or greater than the keyword
        */
        if (($string_length + 1 - $i) >= $keyword_length) {

          // Check if keyword's first char == string's 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;
  }
}
 

├ľl├žek:

 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 
 

21







Bu strstr i┼člevi kullanabilirsiniz :

 $haystack = "I know programming";
$needle   = "know";
$flag = strstr($haystack, $needle);

if ($flag){

    echo "true";
}
 

Dahili bir i┼člev kullanmadan:

 $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







Bununla bir sorunum vard─▒ ve sonunda kendi ├ž├Âz├╝m├╝m├╝ olu┼čturmay─▒ se├žtim. Kullanmadan d├╝zenli ifade motoru:

 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;
 }
 

├ľnceki ├ž├Âz├╝mlerin, ba┼čkalar─▒ i├žin ├Ân ek olarak kullan─▒lan kelimenin yan─▒t─▒ olmad─▒─č─▒n─▒ fark edebilirsiniz. ├ľrne─činizi kullanmak i├žin:

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

Yukar─▒daki ├Ârneklerde, her ikisi de $a ve $b i├žerir $c , ancak i┼člevinizin yaln─▒zca $a i├žerdi─čini s├Âylemesini isteyebilirsiniz $c .


19







Strstr () ve stristr () kullanarak bir dizgede bulunan bir kelimenin olu┼čumunu bulmak i├žin ba┼čka bir se├ženek a┼ča─č─▒daki gibidir:

 <?php
    $a = 'How are you?';
    if (strstr($a,'are'))  // Case sensitive
        echo 'true';
    if (stristr($a,'are'))  // Case insensitive
        echo 'true';
?>
 

16







├ť├ž farkl─▒ ┼čekilde yap─▒labilir:

  $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
 }
 

14







substr_count Sonu├ž kullanan ise ├žok fazla cevap kullanan kontrol eder >0 . Ancak, if ifade s─▒f─▒rla ayn─▒ ┼čekilde de─čerlendirildi─činden , bu ├žekten ka├ž─▒nabilir ve do─črudan yazabilirsiniz:

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

Mevcut olup olmad─▒─č─▒n─▒ kontrol etmek i├žin ! operat├Âr├╝ ekleyin :

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

14







K─▒sa el versiyonu

 $result = false!==strpos($a, 'are');
 

13







Bir 'kelime' bulmak i├žin, asl─▒nda ba┼čka bir kelimenin bir par├žas─▒ olabilecek bir dizi harfin ortaya ├ž─▒kmas─▒ yerine, a┼ča─č─▒dakiler iyi bir ├ž├Âz├╝m olacakt─▒r.

 $string = 'How are you?';
$array = explode(" ", $string);

if (in_array('are', $array) ) {
    echo 'Found the word';
}
 

13







Harf b├╝y├╝kl├╝─č├╝ne duyars─▒z bi├žim kullanmal─▒s─▒n─▒z, bu nedenle girilen de─čer i├žeride small veya caps ├Ânemli de─čilse .

 <?php
$grass = "This is pratik joshi";
$needle = "pratik";
if (stripos($grass,$needle) !== false) { 

 /*If i EXCLUDE : !== false then if string is found at 0th location, 
   still it will say STRING NOT FOUND as it will return '0' and it      
   will goto else and will say NOT Found though it is found at 0th location.*/
    echo 'Contains word';
}else{
    echo "does NOT contain word";
}
?>
 

Burada stripos buluntular heystack i├žinde i─čne olmayan durumda (k├╝├ž├╝k / kapaklar─▒) g├Âz ├Ân├╝ne al─▒nd─▒─č─▒nda.

PHPCode ├ç─▒kt─▒l─▒ ├ľrnek


12







Belki b├Âyle bir ┼čey kullanabilirsiniz:

 <?php
    findWord('Test all OK');

    function findWord($text) {
        if (strstr($text, 'ok')) {
            echo 'Found a word';
        }
        else
        {
            echo 'Did not find a word';
        }
    }
?>
 

12







preg_match() Yaln─▒zca bir dizginin ba┼čka bir dizgide bulunup bulunmad─▒─č─▒n─▒ kontrol etmek istiyorsan─▒z kullanmay─▒n . Daha h─▒zl─▒ olaca─č─▒ i├žin strpos() veya strstr() yerine kullan─▒n . ( http://in2.php.net/preg_match )

 if (strpos($text, 'string_name') !== false){
   echo 'get the string';
}
 

11







Dize birka├ž ├Âzel s├Âzc├╝k i├žerip i├žermedi─čini kontrol etmek istiyorsan─▒z, ┼čunlar─▒ yapabilirsiniz:

 $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, ├Ârne─čin e-posta g├Ânderirken spam'i ├Ânlemek i├žin kullan─▒┼čl─▒d─▒r.


10







Strpos i┼člevi iyi ├žal─▒┼č─▒r, ancak case-insensitive paragraftaki bir s├Âzc├╝─č├╝ denetlemek istiyorsan─▒z, stripos i┼člevinden yararlanabilirsiniz PHP .

├ľrne─čin,

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

Bir dizgede b├╝y├╝k / k├╝├ž├╝k harf duyarl─▒ olmayan bir alt dizenin ilk olu┼čumunun konumunu bulun.

S├Âzc├╝k dizgede bulunmuyorsa, false d├Ând├╝r├╝r, s├Âzc├╝─č├╝n konumunu d├Ând├╝r├╝r.


9







├ľzde┼č / ├Âzde┼č olmayan i┼čle├žler kullanman─▒z gerekir, ├ž├╝nk├╝ strpos dizin de─čeri olarak 0 d├Ând├╝r├╝r. ├ť├žl├╝ operat├Ârlerden ho┼član─▒yorsan─▒z, a┼ča─č─▒dakileri kullanmay─▒ d├╝┼č├╝n├╝n (biraz geriye do─čru g├Âr├╝n├╝yor) kabul ediyorum:

 echo FALSE === strpos($a,'are') ? 'false': 'true';
 

8







Dize belirli kelimeler i├žerip i├žermedi─čini kontrol et.

Bu, dizginin kelimelere g├Âre ├ž├Âz├╝lmesi gerekti─či anlam─▒na gelir (a┼ča─č─▒daki nota bak─▒n─▒z).

Bunu yapman─▒n ve ay─▒r─▒c─▒lar─▒ belirtmenin bir yolu da preg_split ( doc ) kullan─▒yor :

 <?php

function contains_word($str, $word) {
  // split string into words
  // separators are substrings of at least one non-word character
  $arr = preg_split('/\W+/', $str, NULL, PREG_SPLIT_NO_EMPTY);

  // now the words can be examined each
  foreach ($arr as $value) {
    if ($value === $word) {
      return true;
    }
  }
  return false;
}

function test($str, $word) {
  if (contains_word($str, $word)) {
    echo "string '" . $str . "' contains word '" . $word . "'\n";
  } else {
    echo "string '" . $str . "' does not contain word '" . $word . "'\n" ;
  }
}

$a = 'How are you?';

test($a, 'are');
test($a, 'ar');
test($a, 'hare');

?>
 

Ko┼čmak verir

 $ php -f test.php                   
string 'How are you?' contains word 'are' 
string 'How are you?' does not contain word 'ar'
string 'How are you?' does not contain word 'hare'
 

Not: Burada her sembol dizisi i├žin kelime demek istemiyoruz.

Kelimenin pratik bir tan─▒m─▒, PCRE'nin normal ifade motoru anlam─▒na gelir; burada kelimeler, yaln─▒zca kelime karakterlerinden olu┼čan, kelime olmayan karakterlerle ayr─▒lm─▒┼č alt dizilerdir.

Bir "kelime" karakteri, herhangi bir harf veya rakam veya alt ├žizgi karakteri, yani bir Perl "kelimesi" nin par├žas─▒ olabilecek herhangi bir karakterdir. Harflerin ve rakamlar─▒n tan─▒m─▒ PCRE'nin karakter tablolar─▒ taraf─▒ndan kontrol edilir ve yerel ayarlara uygun e┼čle┼čme ger├žekle┼čiyorsa de─či┼čebilir (..).


7







Bir dizge a┼ča─č─▒daki i┼člevle kontrol edilebilir:

 function either_String_existor_not($str, $character) {
    if (strpos($str, $character) !== false) {
        return true;
    }
    return false;
}
 

6



─░lgili yay─▒nlar


Dize alt dize i├žerip i├žermedi─čini nas─▒l kontrol edebilirim? [├žift]

Dize yaln─▒zca rakam i├žerip i├žermedi─čini kontrol edin

Dize dizesinde bir dize i├žerip i├žermedi─čini kontrol etmek i├žin C# kullan─▒m─▒

Dize yaln─▒zca rakam i├žerip i├žermedi─čini kontrol etmenin en h─▒zl─▒ yolu

Belirli karakterler i├žin bir dize nas─▒l kontrol edilir? [kapal─▒]

String giri┼činin say─▒ olup olmad─▒─č─▒ nas─▒l kontrol edilir? [├žift]

Dize sadece bo┼čluk de─čil karakter ve bo┼čluk i├žerip i├žermedi─čini nas─▒l kontrol edebilirim?

Enum listesinde dize de─čeri olup olmad─▒─č─▒n─▒ kontrol nas─▒l?

String sadece harf i├žerip i├žermedi─čini kontrol edin

NSString = belirli bir dize de─čeri olup olmad─▒─č─▒n─▒ kontrol etmek nas─▒l?

Etiketle ilgili di─čer sorular [php]


JQuery i├žin ÔÇťvarÔÇŁ i┼člevi var m─▒?

Bir dize Bash'de bir alt dize i├žerip i├žermedi─čini kontrol etme

Ge├žerli tarihi JavaScriptÔÇÖte nas─▒l alabilirim?

JOIN ve INNER JOIN aras─▒ndaki fark

Swift dilinde #ifdef de─či┼čtirme

PHP ile nas─▒l POST iste─či g├Ânderebilirim?

Bir dizeden noktalama i┼čaretini kald─▒rman─▒n en iyi yolu

Git'teki Oturumu Kapat ├Âzelli─či ne i├žin?

InvariantCulture ve Ordinal dizi kar┼č─▒la┼čt─▒rmas─▒ aras─▒ndaki fark

Bullet renkleri UL / LI html listelerinde herhangi bir g├Âr├╝nt├╝ veya yay─▒lma etiketi kullanmadan CSS yoluyla nas─▒l ayarlan─▒r [├žo─čalt─▒l─▒r]