Bir kelime PHP kullanarak başka dizesinde bulunan olup olmadığını nasıl kontrol edebilirim?

8 Cevap php

Sözde Kod

text = "I go to school";
word = "to"
if ( word.exist(text) ) {
    return true ;
else {
    return false ;
}

Ben kelime metinde varsa true döndüren bir PHP fonksiyonu arıyorum.

8 Cevap

Eğer sizin ihtiyaçlarınıza bağlı olarak bir kaç seçenek var. Bu basit Örneğin, strpos() muhtemelen kullanmak için en basit ve en direkt fonksiyonudur. Eğer sonuç ile bir şeyler yapmak gerekiyorsa, strstr() veya preg_match() tercih edebilir. Eğer iğne gibi karmaşık bir desen yerine bir dize kullanmanız gerekiyorsa, isteyeceksiniz preg_match().

$needle = "to";
$haystack = "I go to school";

strpos() and stripos() yöntemi (stripos () duyarsız olduğunu):

if (strpos($haystack, $needle) !== false) echo "Found!";

strstr() and stristr() method (stristr duyarsız olduğunu):

if (strstr($haystack, $needle)) echo "Found!";

preg_match method (düzenli ifadeler, çok daha esnek, ancak daha yavaş çalışır):

if (preg_match("/to/", $haystack)) echo "Found!";

Tam bir işlevi istedi, çünkü bu (iğne ve samanlık için varsayılan değerleri ile) bir araya koymak istiyorum nasıl:

function match_my_string($needle = 'to', $haystack = 'I go to school') {
  if (strpos($haystack, $needle) !== false) return true;
  else return false;
}

kullanın:

return (strpos($text,$wveyad) !== false); //case-sensitive

veya

return (stripos($text,$wveyad) !== false); //case-insensitive
function hasWord($word, $txt) {
    $patt = "/(?:^|[^a-zA-Z])" . preg_quote($word, '/') . "(?:$|[^a-zA-Z])/i";
    return preg_match($patt, $txt);
}

$ Kelimesi ise, bu maç olacak "için":

  • "Sesime Kulak"
  • "Ay için"
  • "Up-to-dakikalık"

ancak:

  • "Birlikte"
  • "Uzaya"

strpos

<?php
$text = "I go to school";
$word = "to"
$pos = strpos($text, $word);

if ($pos === false) {
    return false;
} else {
    return true;
}
?>

Zaten verilen strpos örnekler dışında başka bir yolu ('strstr' işlevini kullanmak için:

if (strstr($haystack, $needle)) {
   return true;
} else {
   return false;
}
$text="I go to school";
return (strpos($text, 'to')!== false);

The manual page you need to find the correct usage of strpos

@mrclay

'biz sadece yapmak edemez

"/(?:^|\w+)" . preg_quote($word, '/') . "(?:$|\w+)/i"

böylece çek başlangıç ​​ya da boşluk ve biten veya boşluk ya.

Uygun bir php sürümü için pek çok kez aradıktan sonra, benim kendi yazmaya karar ve hatırlamak için iyi (birden fazla parametre iğne ile) işlevi içerir.

function contains($str,$contain)
{
    if(stripos($contain,"|") !== false)
        {
        $s = preg_split('/[|]+/i',$contain);
        $len = sizeof($s);
        for($i=0;$i < $len;$i++)
            {
            if(stripos($str,$s[$i]) !== false)
                {
                return(true);
                }
            }
        }
    if(stripos($str,$contain) !== false)
        {
        return(true);
        }
  return(false);
}

Php açıklaması içerir:

contains($str,$arg)

$str: The string to be searched
$arg: The needle, more arguments divided by '|'

Örnekler:

$str = 'green house';
if(contains($str,"green"))
    echo "we have a green house.";
else
    echo "our house isn't green";

$str = 'green, blue, red houses'; 
if(contains($str,"green|red"))
    echo "we have a green or red house.";
else
    echo "we have a blue house.";