如何在php中检查一个单词是单个还是多个,并将其放入2个数组中
我必须检查字符串数据数组 例如,这是字符串:如何在php中检查一个单词是单个还是多个,并将其放入2个数组中,php,regex,conditional-statements,Php,Regex,Conditional Statements,我必须检查字符串数据数组 例如,这是字符串: $keywords="today, tomorroy, world, is a good day , a good day is, today" 我必须检查是单字还是多字 如果是多个单词,我必须按顺序只留下一个,例如:是一个好日子;美好的一天是我不得不离开的唯一:美好的一天。这个单词我必须存储在其他数组中 最后,我只能得到这样的结果: 这是我的代码: $keywords = ""; $singleword="
$keywords="today, tomorroy, world, is a good day , a good day is, today"
我必须检查是单字还是多字
如果是多个单词,我必须按顺序只留下一个,例如:是一个好日子;美好的一天是我不得不离开的唯一:美好的一天。这个单词我必须存储在其他数组中
最后,我只能得到这样的结果:
这是我的代码:
$keywords = "";
$singleword="";
$multiword="";
foreach ($response->getResults() as $result) {
$keywords .= $result->getText()->getValue() . ",";
if(count(explode(' ', $keywords)) > 1) {
$multiword++;
}
$singleword++;
}
return $keywordsgenerated;
我需要回报:今天,明天,世界,是美好的一天
请你能帮我修复,我是新的php
编辑我想你在寻找这样的东西:
<?php
$keywords="today, tomorrow, world, is a good day , a good day is, today";
$arr = array_unique(explode(",",$keywords));
$words = [];
foreach($arr as $key=>$a) {
$words_explode = explode(" ", $a);
foreach($words_explode as $w) {
$words[] = $w;
}
}
$new_words = array_unique($words);
$result = implode(" ", $new_words);
foreach($arr as $item) {
$result = str_replace($item,$item.",",$result);
}
$result = trim($result,", ");
var_dump($result);
更新2:
如果你想知道每个单词出现的次数
<?php
$keywords = "hansgrohe,hansgrohe focus,küchenarmatur,hansgrohe metris";
$arr = explode(",", $keywords);
$already = [];
$nrwords = [];
$result = '';
foreach($arr as $word) {
$subword = explode(" ", $word);
foreach($subword as $actual_word) {
if (!in_array($actual_word, $already)) {
$result .= $actual_word . ' ';
$already[] = $actual_word;
$nrwords[$actual_word] = 0;
}
$nrwords[$actual_word]++;
}
}
$result = rtrim($result);
//would result in hansgrohe focus küchenarmatur metris
echo $result;
//would show how many of each word that exists
echo '<pre>';
print_r($nrwords);
echo '</pre>';
我不太明白你的意思。首先,您希望将关键字字符串划分为一个基于逗号的数组,这样数组将是[0]今天、[1]明天、[2]世界是美好的一天、[3]美好的一天、[4]今天然后从该数组中删除重复项?@bestprogrammerintheworld您能帮我编写一些代码吗?在我尝试帮助您之前,我想先得到我的问题的答案:-)@bestprogrammerintheworld是,我想在单个单词中删除dublicate,比如今天,只返回一次,在多个单词中删除包含相同单词的短语,只让其中一个单词出现,例如:world,is goodday@bestprogrammerintheworld我只想展示一次$关键字=“今天,明天,世界,是美好的一天,美好的一天是,今天”来显示:$keywords=“今天,明天,世界,美好的一天是”你得到了什么结果?只需用真实的关键字和结果编辑我的问题就可以更好地检查数组中是否存在当前关键字?不知道如何解决我的案子。当$result=内爆(“,$new_words);,问题就开始了。。因为结果不应该是你把我以前的关键字输出在你的问题,但这不是有趣的。如果您有$a=“hansgrohe,hansgrohe focus,küchenarmatur,hansgrohe metris”,您希望的输出是什么?很抱歉,您在第一段代码中做得很好,问题是当内爆新关键字时,创建的新关键字是由3-4个没有意义的单词组成的句子
<?php
$keywords = "hansgrohe,hansgrohe focus,küchenarmatur,hansgrohe metris";
$arr = explode(",", $keywords);
$already = [];
$nrwords = [];
$result = '';
foreach($arr as $word) {
$subword = explode(" ", $word);
foreach($subword as $actual_word) {
if (!in_array($actual_word, $already)) {
$result .= $actual_word . ' ';
$already[] = $actual_word;
$nrwords[$actual_word] = 0;
}
$nrwords[$actual_word]++;
}
}
$result = rtrim($result);
//would result in hansgrohe focus küchenarmatur metris
echo $result;
//would show how many of each word that exists
echo '<pre>';
print_r($nrwords);
echo '</pre>';