Php explode()中作为分隔符的正则表达式
所以我有一个字符串,我把它转换成一个数组,但是我想用正则表达式来分隔每个单词。我正在使用下面的函数匹配整个单词Php explode()中作为分隔符的正则表达式,php,arrays,regex,explode,Php,Arrays,Regex,Explode,所以我有一个字符串,我把它转换成一个数组,但是我想用正则表达式来分隔每个单词。我正在使用下面的函数匹配整个单词 function substr_count_array($haystack, $needle) { $initial = 0; $bits = explode(' ', $haystack); foreach ($needle as $substring) { if (!in_array($substring, $bits))
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
。如何使用正则表达式作为分隔符来匹配每个长度为5-7个字符的字符串
解释更简单:
$animals = array('cat','dog','bird');
$toString = implode(' ', $animals);
$data = array('a');
echo substr_count_array($toString, $data);
如果我搜索一个字符,例如
a
,它将通过检查并验证为合法值,因为a
包含在第一个元素中。但是,如果我匹配由空格分隔的整个单词,如果它们没有被空格分隔,它就会忽略它们。因此,我需要在要匹配的字符串之后使用一个正则表达式来匹配任何。简单地说,您需要使用而不是explode
当explode
将基于常量值进行拆分时,preg_split
将基于正则表达式进行拆分
在您的情况下,最好在非单词字符上拆分
\W+
,然后手动筛选结果的长度。类似这样的内容<代码>预分割(“(.+?)”,$haystack)代码>@JessieStalk-不完全是。传递给preg_split
的正则表达式是字符串拆分的模式,而不是要保留的字符串。如果您试图在输入中保留单词,则应使用非单词字符进行拆分:preg_split('/\W+/',$haystack)
感谢您的时间和努力:)