は、私は、この要素のブラックリストを持っていると言いますその文字列中の各要素の配列をブラックリストからの配列を除いて取得しますか?フェッチする方法の要素は、要素の指定された配列と一致しない
答えて
多分可能です!私はこの方法をsuggere:
<?php
$bl = array('sit', 'consectetur','adipiscing', ',', '.', ' ');
$subject = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
$a_subject = explode(' ', $subject);
$a_subject_filtered = array_filter($a_subject, function($item) use ($bl){
return !in_array($item, $bl);
});
私はdownvotesを使い果たしましたが、この答えには解析エラーの原因となる誤植があり、それを修正した後には望む結果が得られません。将来の読者には役立たないため、この回答を更新または削除してください(実際、非効率的/間接的な方法を教えるために時間を無駄にします)。 – mickmackusa
欠落した ';'を追加した編集の後、この回答は期待される結果を提供しません。もう一度更新するか、削除してください。 – mickmackusa
それは与えられた情報との決定的な答えを出すのは難しいです。あなたはどのように要素を定義するのですか?あなたのブロックリストの中にスペースがあり、昏睡状態で、ピリオドで区切られているだけなので、単語を除いてすべてを残していますか、それとも要素なのですか?他の句読点はどうですか?ここでは可能な解決策はあるが、それはそれはあなたのために働くだろうかどうかについて、いくつかの未知の要因に依存するであろう:
$bl = [
'sit',
'consectetur',
'adipiscing',
];
$subject = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
// REMOVE PUNCTUATION. Add punctuation you want to omit in the brackets
$subject = preg_replace("#[,.]#", '', $subject);
// GET DIFFERENCE BETWEEN TWO ARRAYS
$array = array_diff(
preg_split("#\s+#", $subject),
$bl
);
print_r($array);
はpreg_split()
の1回のコールでそれをすべて行います。パターンは少し準備が必要です。ブラックリストアレイの各エントリを効果的に処理し、区切り文字のように扱います。呼び出しの4番目のパラメータは、空の要素が出力配列から確実に破棄されるようにします。
(Pattern Demo/Official Breakdown)
コード:(Demo)
$blacklist=['sit','consectetur','adipiscing',',','.',' '];
$subject = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
foreach($blacklist as &$entry){ // & means modify by reference, this means $blacklist (not its copy) will be altered
if(ctype_alpha($entry)){
$entry="\b{$entry}\b"; // wrap in word boundaries (str_replace doesn't offer this accuracy)
}else{
$entry="\Q{$entry}\E"; // make non-word literal, no word boundaries required
}
}
$pattern='/'.implode('|',$blacklist).'/i';
// generates: '/\bsit\b|\bconsectetur\b|\badipiscing\b|\Q,\E|\Q.\E|\Q \E/i'
var_export(preg_split($pattern,$subject,NULL,PREG_SPLIT_NO_EMPTY)); // this treats each blacklisted words as a delimiter
出力:あなたができる、正規表現を使用しない柔軟性の低い代替法として
array (
0 => 'Lorem',
1 => 'ipsum',
2 => 'dolor',
3 => 'amet',
4 => 'elit',
)
str_word_count()
の魔法を利用する - これは望ましいアウトを提供するstr_word_count()
がどのように句読点を処理するかによって、サンプル入力データを入れてください。 array_diff()
はちょうど両方の配列に存在するすべての要素を削除します。
コード:(Demo)
$bl = array('sit', 'consectetur','adipiscing', ',', '.', ' '); // the , . and space elements could be removed here
$subject = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
var_export(array_diff(str_word_count($subject,1),$bl)); // if you use strtolower() on $subject, you will get case-insensitive comparisons, but then you will have modified output values. :( This is just one reason why this not a robust method.
出力:
array (
0 => 'Lorem',
1 => 'ipsum',
2 => 'dolor',
4 => 'amet',
7 => 'elit',
)
- 1. 必要な配列要素とperlの別の配列要素を一致させる
- 2. 要素インデックスと配列インデックスの一致方法は?
- 3. xsltの指定された要素に要素を挿入する方法は?
- 4. ネストした配列内の要素と一致する
- 5. ランダムなn個の要素の配列をとり、指定された要素に挿入します。
- 6. 、指定された要素
- 7. 指定された配列要素の取得 - 流星のMongoDB
- 8. 一致する配列要素を探す方法
- 9. 配列内の要素と行を一致させる
- 10. 行列の要素の配列を一致させる
- 11. 不明な要素と不明な要素との一致
- 12. etreeではなく、指定された要素の文字列
- 13. 各要素の列と行を指定するRサブセット要素
- 14. yamlで配列またはリスト要素のファクトを指定する方法は?
- 15. 配列の要素が一致するかどうか、またはc#の別の配列の要素の一部かどうかをチェックする方法は?
- 16. 指定された値要素のReduceByKey
- 17. C++で指されている配列の要素を削除する方法
- 18. 2つの配列の要素を一致させて値を返す方法
- 19. 元の一致を除外した集約配列要素
- 20. 配列の配列(またはリストのリストなど)内の指定された要素の深さの検索
- 21. lxml:ツリー内の指定された要素から新しい要素ツリーを作成する方法
- 22. 指定された1つ前の要素のスタイル方法
- 23. MongoDB単一エントリと配列要素の両方に一致するクエリ
- 24. nsmutablearrayで一致しない要素を取得する方法
- 25. Firebaseを使用して、あるセットの要素と別のセットの要素を一致させる方法は?
- 26. キーの値が一致する配列の要素をマージする方法
- 27. awk配列の要素の数のパターンが一致します
- 28. 配列要素が挿入されている場合にのみ配列要素をプッシュする方法
- 29. MongoDBのクエリは、配列内の要素にマッチし、別の配列内の要素を一致させるべきではない文書を取得する
- 30. 特定の要素が一致しない要素が一致しませんJList ActionListener
なぜダウン票を説明しますか? – user285001
私はdownvoteをしませんでしたが、あなた自身が問題の試みを表示していない可能性があります。 – ctwheels
それは私のものではありませんでしたが、私はそれはあなたがあなたが何を試してみたかを示していないからです(http://meta.stackoverflow.com/questions/261592)。 [**最小、完全で検証可能な例**]で試行してください(http://stackoverflow.com/help/mcve)。 –