Ищите часть массива и получайте оставшуюся часть в PHP - PullRequest
0 голосов
/ 24 октября 2011

У меня есть массив $ myarray со значениями, подобными этим:

myarray = array ( 
    [0] => eat-breakfast 
    [1] => have-a-break
    [2] => dance-tonight
    [3] => sing-a-song
) 

Моя цель - найти часть этого массива и получить оставшуюся часть. Вот пример:

Если я подам ем , я бы хотел получить завтрак .

Если я отправлю , у меня будет , я бы хотел получить a-break .

Я просто пытаюсь, но я совсем не уверен, как это сделать ...

$word = 'eat';
$pattern = '/'.$word.'/i';
foreach ($myarray as $key => $value) {
   if(preg_match($pattern, $value, $matches)){
       echo $value;
   }
}
print_r($matches);

Отображает:

eat-breakfastArray ( ) 

Но я хочу что-то подобное:

breakfast 

Я думаю, что я полностью неправ, но я не знаю, как поступить.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 24 октября 2011

использование

stripos($word, $myarray)

<?php
$myarray = array ( 
    'eat-breakfast',
    'have-a-break',
    'dance-tonight',
    'sing-a-song'
) ;


function search($myarray, $word){
    foreach($myarray as $index => $value){
        if (stripos($value, $word) !== false){
            echo  str_replace(array($word,'-'), "", $value);
        }
    }
}

search($myarray, 'dance');
echo "<br />";
search($myarray, 'have-a');
echo "<br />";
search($myarray, 'sing-a');

демо

0 голосов
/ 24 октября 2011

Я думаю, что слово, которое вы ищете, находится в начале. Попробуйте это

function f($myarray, $word)
{
    $len = strlen($word);
    foreach($myarray as $item)
    {
        if(substr($item, 0, $len) == $word)
            return substr($item, $len+1);
    }

    return false;
}
0 голосов
/ 24 октября 2011

Это будет выполнять поиск в массиве (с нативной функцией) и возвращать остаток строки.

function returnOther($search, $array) {
    $found_key = array_search($search, $array);
    $new_string = str_replace($search . "-", "", $array[$found_key]);
    return $new_string;
}
0 голосов
/ 24 октября 2011

Вы вводите неверную информацию в preg_match, хотя я бы рекомендовал использовать array_search () .. Проверьте мой обновленный фрагмент:

$word = 'eat';
$pattern = '/'.$word.'/i';
foreach ($myarray as $key => $value) {
   if(preg_match($pattern, $value, $matches)){
       echo $value;
   }
}
print_r($matches);

Чтобы избавиться от этого последнего бита, просто выполнитеОперация str_replace для замены слова на ""

...