wake-up-neo.net

Suche nach Text mit PHP, wenn ($ Text enthält "World")

Wie suche ich nach Text mit PHP?

So etwas wie: 

<?php

$text = "Hello World!";

if ($text contains "World") {
    echo "True";
}

?>

Ausgenommen, if ($text contains "World") { durch eine Arbeitsbedingung zu ersetzen.

19
faressoft

In Ihrem Fall können Sie einfach strpos() oder stripos() verwenden, um zwischen Groß- und Kleinschreibung zu suchen:

if (stripos($text, "world") !== false) {
    echo "True";
}
39
BoltClock

Was Sie brauchen, ist strstr() (oder stristr(), wie LucaB darauf hinweist). Verwenden Sie es so:

if(strstr($text, "world")) {/* do stuff */}
8
Gabi Purcaru

Wenn Sie einen Algorithmus zum Rangieren von Suchergebnissen basierend auf der Relevanz mehrerer Wörter suchen, können Sie die Suchergebnisse schnell und einfach mit PHP generieren.

Implementierung des Vektorraummodells in PHP

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);
        $doc_count=count($corpus['doc_count']);

        foreach($words as $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 fro  high to low
        arsort($similar_documents);
    }   
    return $similar_documents;
}

IN IHREM FALL

$query = 'world';

$corpus = array(
    1 => 'hello world',
);

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

ERGEBNISSE

Array
(
    [1] => 0.79248125036058
)

PASSENDE MEHRERE WÖRTER GEGEN MEHRERE SÄTZE

$query = 'hello world';

$corpus = array(
    1 => 'hello world how are you today?',
    2 => 'how do you do world',
    3 => 'hello, 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>';

ERGEBNISSE

Array
(
    [1] => 0.74864218272161
    [2] => 0.43398500028846
)

von Wie überprüfe ich, ob eine Zeichenfolge ein bestimmtes Wort in PHP enthält?

3
RafaSashi

Das könnte sein, wonach Sie suchen:

<?php

$text = 'This is a Simple text.';

// this echoes "is is a Simple text." because 'i' is matched first
echo strpbrk($text, 'mi');

// this echoes "Simple text." because chars are case sensitive
echo strpbrk($text, 'S');
?>

Ist es?

Oder vielleicht das:

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

Oder sogar das 

<?php
$email  = '[email protected]';
$domain = strstr($email, '@');
echo $domain; // prints @example.com

$user = strstr($email, '@', true); // As of PHP 5.3.0
echo $user; // prints name
?>

Sie können alles darüber in der Dokumentation hier lesen:

http://php.net/manual/de/book.strings.php

2
Trufa

meiner Meinung nach ist Strstr () besser als Strpos (). weil strstr () sowohl mit PHP 4 AND PHP 5 kompatibel ist, als auch strpos () nur mit PHP 5 kompatibel ist. Bitte beachten Sie, dass ein Teil der Server kein PHP hat. 5

1
Mahdi Jazini
  /* https://ideone.com/saBPIe */

  function search($search, $string) {

    $pos = strpos($string, $search);  

    if ($pos === false) {

      return "not found";     

    } else {

      return "found in " . $pos;

    }    

  }

  echo search("world", "hello world");

PHP online einbetten:

body, html, iframe { 
  width: 100% ;
  height: 100% ;
  overflow: hidden ;
}
<iframe src="https://ideone.com/saBPIe" ></iframe>

0
antelove

Die beste Lösung ist meine Methode:

Bei meiner Methode werden nur vollständige Wörter erkannt, auf andere Weise jedoch nicht.

zum Beispiel: $ text = 'Hallo Welt!'; if (strpos ($ text, 'wor') === FALSE) {echo '"wor" nicht in string gefunden'; }

ergebnis: strpos hat true zurückgegeben !!! aber in meiner Methode zurückgeben falsch.

meine Methode:

öffentliche Funktion searchInLine ($ txt, $ Word) {

    $txt=strtolower($txt);
    $Word=strtolower($Word);
    $Word_length=strlen($Word);
    $string_length=strlen($txt);
    if(strpos($txt,$Word)!==false){
        $indx=strpos($txt,$Word);
        $last_Word=$indx+$Word_length;
        if($indx==0){
            if(strpos($txt,$Word." ")!==false){
                return true;
            }
            if(strpos($txt,$Word.".")!==false){
                return true;
            }
            if(strpos($txt,$Word.",")!==false){
                return true;
            }
            if(strpos($txt,$Word."?")!==false){
                return true;
            }
            if(strpos($txt,$Word."!")!==false){
                return true;
            }
        }else if($last_Word==$string_length){
            if(strpos($txt," ".$Word)!==false){
                return true;
            }
            if(strpos($txt,".".$Word)!==false){
                return true;
            }
            if(strpos($txt,",".$Word)!==false){
                return true;
            }
            if(strpos($txt,"?".$Word)!==false){
                return true;
            }
            if(strpos($txt,"!".$Word)!==false){
                return true;
            }

        }else{
            if(strpos($txt," ".$Word." ")!==false){
                return true;
            }
            if(strpos($txt," ".$Word.".")!==false){
                return true;
            }
            if(strpos($txt," ".$Word.",")!==false){
                return true;
            }
            if(strpos($txt," ".$Word."!")!==false){
                return true;
            }
            if(strpos($txt," ".$Word."?")!==false){
                return true;
            }
        }
        }

    return false;
}
0
M.ghorbani