JPDP
JPDP

Reputation: 199

PHP - Matching words in dynamic arrays

I've taken a look around but cant seem to find anything that does as needed.

Lets say I have 2 arrays in a function, however they are completely dynamic. So each time this function is run, the arrays are created based on a page that has been submitted.

I need to some how match these arrays and look for any phrase/words that appear in both.

Example: (with only a single element in each array)

    Array 1: "This is some sample text that will display on the web"
    Array 2: "You could always use some sample text for testing"

So in that example, the 2 arrays have a phrase that appears exactly the same in each: "Sample Text"

So seeing as these arrays are always dynamic I am unable to do anything like Regex because I will never know what words will be in the arrays.

Upvotes: 2

Views: 680

Answers (4)

Ja͢ck
Ja͢ck

Reputation: 173522

You could find all words in an array of strings like this:

function find_words(array $arr)
{
        return array_reduce($arr, function(&$result, $item) {
                if (($words = str_word_count($item, 1))) {
                        return array_merge($result, $words);
                }
        }, array());
}

To use it, you run the end results through array_intersect:

$a = array('This is some sample text that', 'will display on the web');
$b = array('You could always use some sample text for testing');

$similar = array_intersect(find_words($a), find_words($b));
// ["some", "sample", "text"]

Upvotes: 4

Christopher Costa
Christopher Costa

Reputation: 17

Explode the two strings by spaces, and it is a simple case of comparing arrays.

Upvotes: 0

Borniet
Borniet

Reputation: 3546

Array_intersect() should do this for you:

http://www.php.net/manual/en/function.array-intersect.php

*array_intersect() returns an array containing all the values of array1 that are present in all the arguments. Note that keys are preserved.*

Upvotes: 1

steven
steven

Reputation: 4875

maybe something like this:

foreach($arr as $v) {
   $pos = strpos($v, "sample text");
   if($pos !== false) {
        // success
   }

}

here is the manual: http://de3.php.net/manual/de/function.strpos.php

Upvotes: 0

Related Questions