Я считаю, что здесь много вариантов.
Вот мое решение (я): Вы можете использовать search_array()
для этого. Массив поиска возвращает false, если в массиве in_array не найдено никакой другой иглы. Если найдено другое слово, возвращается ключ.
В зависимости от ваших потребностей, вы можете использовать один из следующих вариантов ниже.
//Option 1
//Words that actually appear more than once...
$new_arr = array();
foreach($exp as $key=>$e) {
//Must be this word only (therefore the true-statement
$search = array_search($e, $exp, true);
if ($search !== false && $search != $key) {
$new_arr[] = $e;
}
}
//Option 2
//
//Your question was not totally clear so I add this code as well
//Words with asterixes before and after that appear more than once
$new_arr = array();
foreach($exp as $key=>$e) {
//Two asterixes at the beginning of the sting and two at the end
//strtolower sets **Technology** and **technology** as a duplicate of word
if (substr($e,0,2) == "**" && substr($e,-2,2) == "**") {
$search = array_search(strtolower($e), $exp);
if ($search !== false && $search != $key) {
$new_arr[] = $e;
}
}
}
for($j = 0; $j < count($new_arr); $j++){
$this->db->query("INSERT INTO news (news_id, news_content)
VALUES ('$id', $new_arr[$j])");
}
Как кто-то упоминал в комментарии, вы должны предотвратить SQL инъекции, введя таким образом в INSERT- оператор (и вы должны это сделать), но вопрос был в основном в том, чтобы найти дубликаты в строке и что-то с ними сделать, поэтому я не буду go дальше с этим комментарием.
Массив результатов $new_arr
будет например: (вариант 1)
array (size=9)
0 => string 'the' (length=3)
1 => string 'the' (length=3)
2 => string '**food**' (length=8)
3 => string 'to' (length=2)
4 => string 'the' (length=3)
5 => string '**impact**' (length=10)
6 => string 'have' (length=4)
7 => string 'on' (length=2)
8 => string 'the' (length=3)
Причина, по которой Технология и Технология - это не одно и то же, потому что это заглавная буква T в одном из слов.
Массив результатов $new_arr
хотел бы: (вариант 2)
array (size=3)
0 => string '**food**' (length=8)
1 => string '**Technology**' (length=14)
2 => string '**impact**' (length=10)