Я пытаюсь отделить мои хэштеги от строки из одного поста, поэтому, если в посте их больше одного, они разделяются на один #hashtags
и положить в отдельные строки в моей таблице хештега их post_id
,
В настоящее время с моей функцией ниже они вставляются в одну строку и перечисляются через запятую. Как я могу поместить их в массив, а затем хранить их по отдельности, пожалуйста?
Вот что я пытался безрезультатно:
$hashtags ="#hashtag1 this is my string with two hashtags #hashtag2";
if($hashtags==""){
}else{
function getHashtagsd($hashtags) {
$hashtagarray = FALSE;
preg_match_all("/(#\w+)/u", $hashtags, $matches);
if ($matches) {
$hashtagarray = implode(",", $matches[0]);
}
return $hashtagarray;
}
$hashtagarray = getHashtagsd($hashtags);
$hashtagarray = getHashtagsd($hashtags);
$myArray1 = explode(';', $hashtagarray);
$myArray = explode('#', $myArray1);
$insertf = "INSERT INTO streamdata_hashtags(streamitem_hashtag_id,hashtag,streamitem_hashtag_timestamp) VALUES ($last_id,'$hashtagarray',NOW())";
$add_postf = mysqli_query($mysqli,$insertf) or die(mysqli_error($mysqli));
}
Я добавил взрывы и получил эту ошибку:
explode () ожидает, что параметр 2 будет строкой, а массив задан в
Вы сделали много кодирования, которое не было необходимым. Я обновил код и добавил несколько комментариев о том, как он работает:
$hashtags = "#hashtag1 this is my string with two hashtags #hashtag2";
function getHashtagsd($hashtags) {
preg_match_all("/(#\w+)/u", $hashtags, $matches);
if ($matches) {
return $matches[0]; // No need to implode, just return the array
}
}
$hashtagarray = getHashtagsd($hashtags);
// Walk through the array and insert each hashtag
for($i = 0; $i < count($hashtagarray); $i++){
$insertf = "INSERT INTO streamdata_hashtags(streamitem_hashtag_id,hashtag,streamitem_hashtag_timestamp) VALUES ($last_id,'". $hashtagarray[$i] ."',NOW())";
$add_postf = mysqli_query($mysqli,$insertf) or die(mysqli_error($mysqli));
}
Других решений пока нет …