我有一个名为$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
我想我完全错了,但我不知道该怎么做。
谢谢。
use
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');
演示我想你要找的词在开头。试试这个
function f($myarray, $word)
{
$len = strlen($word);
foreach($myarray as $item)
{
if(substr($item, 0, $len) == $word)
return substr($item, $len+1);
}
return false;
}
您向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操作将单词替换为"
这将搜索数组(使用本地函数)并返回字符串的剩余部分。
function returnOther($search, $array) {
$found_key = array_search($search, $array);
$new_string = str_replace($search . "-", "", $array[$found_key]);
return $new_string;
}