Preg_match, когда строка иногда является одним словом? - PullRequest
0 голосов
/ 12 июня 2011

Я пытаюсь извлечь слово из строки темы электронного письма, чтобы использовать его в качестве категории для прикрепленного электронного письма.Preg_match прекрасно работает, если это не просто одно слово (это то, что я хотел бы сделать в любом случае).Если в строке темы только одно слово, я просто получаю пустой массив.В этом случае я пытался рассматривать $ match как переменную, но это тоже не работает.Может кто-нибудь сказать мне, будет ли preg_match работать с одним словом, или какой лучший способ сделать это будет?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 12 июня 2011

Предполагая \b(?:word1|word2|word3)\b

Причина, по которой он не соответствует «word1», заключается в том, что вы включили разделитель слов, \b.

То, что вы можете сделать, это просто всегда вводить разделитель слов:

preg_match("\b(?:word1|word2|word3)\b", "." . $subject . ".", $matches);

Грубый, но эффективный.

0 голосов
/ 12 июня 2011

preg_match будет работать со строкой длиной один символ.Я думаю, что проблема здесь, вероятно, в вашем регулярном выражении.Я предполагаю, что вы тестируете пробелы и, поскольку он не находит ничего, он говорит, что нет совпадений.Попробуйте добавить '^([^\s]*)$|' к своему регулярному выражению, и я держу пари, что он начнет подбирать значения из одного слова.([^\s] означает, дайте мне что-нибудь без пробелов, | означает 'или'. Добавив его в начало вашего регулярного выражения, оно будет включать в себя вещи без пробелов или , что у вас уже было)

...