1

配列リストに従って、文から特定の単語を選択したい

$sentence = "please take this words only to display in my browser";

$list = array ("display","browser","words","in");

「ブラウザに単語が表示される」のように出力したい

誰かこれで私を助けてください。THX

4

5 に答える 5

1

この1つのライナーでそれができるのだろうか:

echo join(" ", array_intersect($list, explode(" ",$sentence)));

自己責任 :)

編集:ええ、それは仕事をします、ちょうどテストされました

于 2012-05-18T11:16:10.193 に答える
1

preg_match でそれを行うことができます:

$sentence = "please take this words only to display in my browser";

$list = array ("display","browser","words","in");

preg_match_all('/\b'.implode('\b|\b', $list).'\b/i', $sentence, $matches) ;
print_r($matches);

単語を順番に取得します

Array
(
    [0] => Array
        (
            [0] => words
            [1] => display
            [2] => in
            [3] => browser
        )

)

ただし、テキストがそれほど単純でない場合は、正規表現のパフォーマンスに注意してください。

于 2012-05-18T11:21:25.180 に答える
0
$narray=array();

foreach ($list as $value) {
    $status=stristr($sentence, $value);
    if ($status) {
        $narray[]=$value;
        }
}

echo @implode(" ",$narray);
于 2012-05-18T11:40:21.113 に答える
0

strpos配列内の各値の文字列を検索し、その値をキーとして新しい配列に割り当てることができると思います。これにより、ソート可能な配列が得られ、用語が文字列に表示される順序で出力できます。以下またはを参照してください。

<?php
$sentence = "please take this words only to display in my browser";

$list = array ("display","browser","words","in");

$found = array();

foreach($list as $k => $v){
    $position = strpos(strtolower($sentence), strtolower($v));
    if($position){
    $found[$position] = $v; 
    }
}

ksort($found);
foreach($found as $v){
    echo $v.' ';    
}
?>
于 2012-05-18T11:27:15.393 に答える
0

単語ごとにチェックするのではなく、これの短いバージョンを知りません。

$words = explode(" ", $sentence);
$new_sentence_array = array();
foreach($words as $word) {
    if(in_array($word, $list)) {
        $new_sentence_array[] = $word;
    }
}

$new_sentece = implode(" ", $new_sentence_array);
echo $new_sentence;
于 2012-05-18T11:15:56.030 に答える