避免重复 Stripos() PHP
Avoid Duplicate Stripos() PHP
我只是使用 HTML Simple Parser 通过键入单词来查找新闻,但在 stripos()
上遇到了问题,因为我键入关键字 "Joe Antam".
这是我的代码:
$data['inputcari'] = $this->input->post('inputcari');
$html = file_get_html('https://www.suara.com/bisnis/bisnis-category/keuangan');
$data['konten'] = $html->find('div[class="item-content item-right"]');
$data['terms'] = explode(' ', $data['inputcari']);
foreach ($data['konten'] as $kon) {
foreach ($data['terms'] as $term) {
foreach ($kon->find('h4') as $h4) {
if (stripos($h4->plaintext, $term) !== false) {
echo $h4->plaintext . '<br>';
}
}
}
}
它让他们显示所有包含 joe 的结果,然后是 antam 所以结果会显示两次,如下所示:
Joe Biden Jadi Presiden AS, Apa Pengaruhnya ke Indonesia
Joe Biden Kamala Harris Dilantik, Harga Emas Antam Naik Jadi Rp 963.000
Joe Biden Kamala Harris Dilantik, Harga Emas Antam Naik Jadi Rp 963.000
Nilai Tukar Rupiah Menguat Usai Joe Biden Dilantik Jadi Presiden AS
Pelantikan Joe Biden Kamala Harris Berimbas Positif ke IHSG
Joe Biden Dilantik Jadi Presiden AS, Harga Emas Dunia Makin Berkilau
而不是 echo
找出你找到的每一行,将它们添加到一个数组,然后在循环结束时使用 array_unique()
在输出它们之前删除重复项......
$lines = [];
foreach ($data['konten'] as $kon) {
foreach ($data['terms'] as $term) {
foreach ($kon->find('h4') as $h4) {
if (stripos($h4->plaintext, $term) !== false) {
$lines[] = $h4->plaintext;
}
}
}
}
$lines = array_unique($lines);
echo implode('<br>', $lines);
或者...
交换两个内部循环,所以最后一个循环是术语,然后在找到匹配项后立即跳出该循环...
foreach ($data['konten'] as $kon) {
foreach ($kon->find('h4') as $h4) {
foreach ($data['terms'] as $term) {
if (stripos($h4->plaintext, $term) !== false) {
echo $h4->plaintext;
break;
}
}
}
}
我只是使用 HTML Simple Parser 通过键入单词来查找新闻,但在 stripos()
上遇到了问题,因为我键入关键字 "Joe Antam".
这是我的代码:
$data['inputcari'] = $this->input->post('inputcari');
$html = file_get_html('https://www.suara.com/bisnis/bisnis-category/keuangan');
$data['konten'] = $html->find('div[class="item-content item-right"]');
$data['terms'] = explode(' ', $data['inputcari']);
foreach ($data['konten'] as $kon) {
foreach ($data['terms'] as $term) {
foreach ($kon->find('h4') as $h4) {
if (stripos($h4->plaintext, $term) !== false) {
echo $h4->plaintext . '<br>';
}
}
}
}
它让他们显示所有包含 joe 的结果,然后是 antam 所以结果会显示两次,如下所示:
Joe Biden Jadi Presiden AS, Apa Pengaruhnya ke Indonesia
Joe Biden Kamala Harris Dilantik, Harga Emas Antam Naik Jadi Rp 963.000
Joe Biden Kamala Harris Dilantik, Harga Emas Antam Naik Jadi Rp 963.000
Nilai Tukar Rupiah Menguat Usai Joe Biden Dilantik Jadi Presiden AS
Pelantikan Joe Biden Kamala Harris Berimbas Positif ke IHSG
Joe Biden Dilantik Jadi Presiden AS, Harga Emas Dunia Makin Berkilau
而不是 echo
找出你找到的每一行,将它们添加到一个数组,然后在循环结束时使用 array_unique()
在输出它们之前删除重复项......
$lines = [];
foreach ($data['konten'] as $kon) {
foreach ($data['terms'] as $term) {
foreach ($kon->find('h4') as $h4) {
if (stripos($h4->plaintext, $term) !== false) {
$lines[] = $h4->plaintext;
}
}
}
}
$lines = array_unique($lines);
echo implode('<br>', $lines);
或者...
交换两个内部循环,所以最后一个循环是术语,然后在找到匹配项后立即跳出该循环...
foreach ($data['konten'] as $kon) {
foreach ($kon->find('h4') as $h4) {
foreach ($data['terms'] as $term) {
if (stripos($h4->plaintext, $term) !== false) {
echo $h4->plaintext;
break;
}
}
}
}