我想根據我的數組列表選擇的話
$sentence = "please take this words only to display in my browser";
$list = array ("display","browser","words","in");
我想要的輸出,就像「字樣在瀏覽器中顯示」
請別人從一個句子中選擇特定的單詞幫助我這個。 THX
我想根據我的數組列表選擇的話
$sentence = "please take this words only to display in my browser";
$list = array ("display","browser","words","in");
我想要的輸出,就像「字樣在瀏覽器中顯示」
請別人從一個句子中選擇特定的單詞幫助我這個。 THX
我不知道任何簡短的版本,而不是逐字逐句檢查。
$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;
我想過這個。句子中的標點符號呢?我的意思是,我確信這個例子可以工作,但在更廣泛的應用中,我認爲它需要更多。 – bozdoz
我不知道這一個襯墊會做到這一點:在您自己的風險:)
編輯
echo join(" ", array_intersect($list, explode(" ",$sentence)));
用途:耶,它的工作,只是測試
不錯,但我相信他希望按照它們在句子中出現的順序排列。 – bozdoz
你可以用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
)
)
但要小心使用正則表達式的性能,如果該文本並非如此簡單。
我想你可以搜索數組中的每個值的字符串,並將其分配給一個新的數組,其值爲strpos
作爲鍵;這會給你一個可排序的數組,然後你可以按照字符串出現的順序輸出。見下文,或example。
<?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.' ';
}
?>
$narray=array();
foreach ($list as $value) {
$status=stristr($sentence, $value);
if ($status) {
$narray[]=$value;
}
}
echo @implode(" ",$narray);
請詳細說明。您打算使用哪種語言?是一個網絡應用程序或獨立程序?句子和單詞從哪裏來。基本上爲什麼你需要這個... – tumchaaditya
這個問題被標記爲PHP,所以我認爲他打算使用PHP,也許我錯了:P – Khriz