【发布时间】:2014-09-09 21:11:16
【问题描述】:
所以我有一个字符串,我将其转换为一个数组,但我想使用正则表达式分隔每个单词。我正在使用以下函数匹配整个单词。
function substr_count_array($haystack, $needle)
{
$initial = 0;
$bits = explode(' ', $haystack);
foreach ($needle as $substring)
{
if (!in_array($substring, $bits))
{
continue;
}
$initial += substr_count($haystack, $substring);
}
return $initial;
}
问题在于它匹配字符串animal,但不匹配animals。如果我像这样进行部分匹配:
function substr_count_array2($haystack, $needle)
{
$initial = 0;
foreach ($needle as $substring)
{
$initial += substr_count($haystack, $substring);
}
return $initial;
}
它也匹配,比如说a,因为它包含在单词animals 中并返回2。如何explode() 使用正则表达式作为分隔符,以便例如匹配每个长度为 5-7 个字符的字符串?
解释更简单:
$animals = array('cat','dog','bird');
$toString = implode(' ', $animals);
$data = array('a');
echo substr_count_array($toString, $data);
如果我搜索 a 之类的字符,它会通过检查并验证为合法值,因为 a 包含在第一个元素中。但是,如果我匹配由空格爆炸的整个单词,如果它们没有被空格分隔,它会省略它们。因此,我需要用一个匹配任何AFTER要匹配的字符串的正则表达式来分隔。
【问题讨论】: