Jag hämtar -och visar flera rss flöden med SimplePie.
Nu skulle jag även behöva filtrera, så att endast poster som innehåller ett -eller flera specifika ord (nyckelord), ska visas.
Hur kan jag åstadkomma detta på bästa sätt?
Finns det något annat "bibliotek" som är bättre att använda, istället för SimplePie?
Dvs, om $title är lika med något värde i arrayen $keywords (notera: lika med, inte innehåller), då ska du visa ett felmeddelande och avbryta exekveringen av scriptet.
Jag tror mig se två fel här:
1. Du avbryter exekvering av scriptet OM matchning görs. Jag tror du menar tvärtom.
2. Du kontrollerar inte om $title innehåller de specifika nyckelorden, utan om $title är lika med något av de specifika nyckelorden.
Titta t.ex. på någon av funktionerna preg_match(), strpos(), stripos() eller strstr() för att kolla om en sträng innehåller ett visst värde.
Jag tror att det ska vara komma (,) mellan orden i keywords, alltså
spelar absolut ingen roll, då den kollar efter en position, om du har med dig "," och man kan söka efter "," så kommer den säga att den hittar den i träffen. den kommer även få träff på "d1" osv. Om något så är det vettigare om man måste träffa på exakta ord så är array lösningen en bättre idé.
Nu är inte PHP min starka sida alls.. men die avbryter väl for each.. så om du inte få en träff på första posten i din RSS feed så kommer den inte försöka mer
Om detta är samma som i javascript så kommer den alltid vara false (om === är att den kolla typ på $pos) för $pos är en sträng och kommer aldrig vara en boolean, men enligt php guiden så skall detta gå bra...
Du söker nu i $info om strängen "ord1 ord2 ord3" finns där. Jag tror inte att det är detta du menar, jag tror att du vill veta om någon av delsträngarna "ord1", "ord2" eller "ord3" finns i $info. Du måste då splitta $ord så att du kollar ett ord åt gången.
Exempel:
$info = "Denna sträng innehåller ord2 men inte något av de andra";
$ord = "ord1 ord2 ord3";
/* kan också vara
$ord = array('ord1', 'ord2', 'ord3');
då slipper du nästa kodrad */
$ord = explode(' ', $ord);
$found = false;
foreach ($ord as $o) {
if (stripos($info, $o) !== false) {
$found = true;
break; // Vi har hittat en matchning och behöver inte köra vidare i foreach-loopen
}
}
if (!$found) {
echo 'Finns inte!';
} else {
// Gör vad du vill när något av sökorden finns
}
130 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe