$inBoth = array_intersect(preg_split('/,\s*/', $array), $keyword);
CodePad .
get_meta_tags()
просто возвращает ключевые слова в виде строки, поэтому нам нужно разделить их на массив. Мы учитываем людей, добавляющих пробелы, новые строки или табуляции после ,
.
Вы также можете пропустить регулярное выражение и взорваться на ,
, а затем использовать array_map('trim', $array)
.
Без этого вы рискуете "art"
и " art"
не соответствовать.
Обновление
можно ли сопоставлять массивы без учета регистра?
Если вы не возражаете, что получившиеся массивы будут в нижнем регистре, вы можете использовать array_map('strtolower', $array)
на обоих массивах перед использованием array_intersect()
.
В противном случае, это будет сделано ...
$metaKeywords = preg_split('/,\s*/', $array);
$matches = array();
foreach($keyword as $keyword) {
foreach($metaKeywords as $value) {
if (strtolower($value) == strtolower($keyword)) {
$matches[] = $keyword;
}
}
}
$matches
будет иметь ключевые слова в обоих регистрах без учета регистра.
Если у вас есть многобайтовые строки, используйте mb_strtolower()
или эквивалентный.