【发布时间】:2011-06-15 17:50:57
【问题描述】:
在 SO 的帮助下,我能够从电子邮件主题行中提取“关键字”以用作类别。现在我决定允许每张图片有多个类别,但似乎无法正确表达我的问题以获得谷歌的良好回应。 preg_match 在列表中的第一个单词处停止。我确信这与“渴望”或只是将管道符号 | 替换为其他东西有关,但我就是看不到它。\b(?:amsterdam|paris|zurich|munich|frankfurt|bulle)\b .
我当前使用的整个字符串是:
preg_match("/\b(?:amsterdam|paris|zurich|munich|frankfurt|bulle)\b/i", "." . $subject . ".", $matches);
我需要做的就是将所有这些单词都提取出来(如果它们存在),而不是停留在 amsterdam 或者它正在搜索的主题中出现的任何单词。之后,就是处理$matches数组的事情了,对吧?
谢谢, 标记
【问题讨论】:
-
尝试
preg_match_all- php.net/manual/en/function.preg-match-all.php - 只需将_all添加到函数名称中。 -
我还要补充一点,
$matches与preg_match_all略有不同 -
非常感谢!是的,$matches 确实发生了变化。乍一看,现在似乎是数组中的数组。
print_r($matches)给了我Array ( [0] => Array ( [0] => paris [1] => bulle ) )。我正在研究它,但有什么明显的建议可以解决这个问题吗? -
再次感谢@hakre 和@datasage 的帮助。不知道它是否“正确”,但我让它与嵌套的 foreach 循环一起工作。
-
马克,我添加了更多示例代码的答案。由于
$matches中的值发生了变化,只有添加 _all 有点短,因为 datasage 确实正确提及。该示例展示了如何将结果转换为一个简单的城市数组。
标签: php preg-match