Используя PHP, я пытаюсь улучшить поиск на своем сайте, поддерживая Google, например, операторов, например.Регулярные выражения для операторов Google
- ключевого слова = натуральное/по умолчанию
- «ключевое слово» или «поиск фразы» = точное соответствие
- ключевого слова * = частичное совпадение
Для этой работу мне нужно разбить строку в два массива. Один для точных слов (но без двойных кавычек) в $ Array1() и помещает все остальное (естественные и частичные ключевые слова) в Array2().
Какие регулярные выражения достигнут этого для следующей строки?
Пример строки ($ строка)
сегодня я "пытается" из а * "Google Search" "тест"
Желаемая результат
$Array1 = array(
[0]=>trying
[1]=>google search
[2]=>testing
);
$Array2 = array(
[0]=>today
[1]=>i'm
[2]=>out
[3]=>a*
);
1) Exact Я пробовал следующее для точного regexp, но он возвращает два массива, один с одним и без двойных кавычек. Я мог бы просто использовать $ result [1], но может быть трюк, который мне не хватает здесь.
preg_match_all(
'/"([^"]+)"/iu',
'today i\'m "trying" \'out\' a* "google search" "test"',
$result
);
2) Природные/Частичное Следующее правило возвращает правильные ключевые слова, но вместе с несколькими пустыми значениями. Это правило регулярного выражения может быть неаккуратным или я должен просто запустить массив через array_filter()?
preg_split(
'/"([^"]+)"|(\s)/iu',
'today i\'m "trying" \'out\' a* "google search" "test"'
);
Гамб, спасибо! Это отлично работает для меня. Я не знал о strtok(), и это отличное решение. – Adam
Это тоже помогло мне. +1 – Dutchie432