Я использую это:регулярное выражение для извлечения хэш-тегов без пробелов
$t = "#hashtag #goodhash_tag united states #l33t this";
$queryVariable = "";
if(preg_match_all('/(^|\s)(#\w+)/', $t, $arrHashTags) > 0){
array_filter($arrHashTags);
array_unique($arrHashTags);
$count = count($arrHashTags[2]);
if($count > 1){
$counter = 1;
foreach ($arrHashTags[2] as $strHashTag) {
if (preg_match('/#\d*[a-z_]+/i', $strHashTag)) {
if($counter == $count){
$queryVariable .= $strHashTag;
} else{
$queryVariable .= $strHashTag." and ";
}
$newTest = str_replace($arrHashTags[2],"", $t);
}
$counter = $counter + 1;
}
}
}
echo $queryVariable."<br>"; // this is list of tags
echo $newTest; // this is the remaining text
Выходной сигнал на основе вышеприведенного $t
является:
#hashtag and #goodhash_tag and #l33t
united states this
Первая проблема:
если $t = '#hashtag#goodhash_tag united states #l33t this';
то есть без промежуток между двумя тегами, выход будет следующим:
#hashtag and #l33t
#goodhash_tag united states this
Вторая проблема:
если $t = '#hashtag #goodhash_tag united states #l33t this #123';
т.е. с неверным тегом #123
это как-то мешает мой список тегов извлеченный в $queryVariable
как выход становится
#hashtag and #goodhash_tag and #l33t and // note the extra 'and'
united states this
Пожалуйста, помогите на этих двоих, если кто-нибудь?
Я бы очень признателен, если бы кто-нибудь мог как-то помочь в решении вопроса :) – coder101
Небольшое предложение было бы использовать '(# [A-z _] \ w +)' вместо этого. =) – hjpotter92
@DreamEater вы имеете в виду, в строке, где используется 'preg_match', и хотите ли вы, чтобы я заменил весь шаблон или его часть? – coder101