PHP中的preg_match和UTF-8制作主题标签

时间:2013-07-26 22:53:50

标签: php utf-8 hashtag

我有这段代码:

$text= "#h #gg #مصر";
$get_hash = preg_match_all("/(^|\s)#(\w*[a-zA-Z-أ-إ-آ-ا-ب-ت-ث-ج-ح-خ-د-ذ-ر-ز-س-ش-ص-ض-ط-ظ-ع-غ-ف-ق-ك-ل-م-ن-ه-و-لا-لا-لآ-لأ-لإ-ى-ي-ئ-ة-ء-ؤ_]+\w*)/", $text, $matches);
$array_hash = implode("",$matches[0]).""; 
$hash = str_replace('#', ', ', $array_hash);
echo "hash (".$hash.")<br />";
echo $text;

结果:

hash (, h , gg)
#h #gg #مصر

我想要一个像这样的结果:

hash (, h , gg , مصر)
#h #gg #مصر

2 个答案:

答案 0 :(得分:1)

要使用 UTF-8 中的任何内容,我们使用此[^ \"\n\r\t<]*

答案 1 :(得分:0)

我知道其他人知道为时已晚

我修改此功能以使其允许阿拉伯字符

as fallowing

 function get_hashtags($string, $str = 1) {
 preg_match_all('/#(\w*[a-zA-Z-أ-إ-آ-ا-ب-ت-ث-ج-ح-خ-د-ذ-ر-ز-س-ش-ص-ض-ط-ظ-ع-غ-ف-ق-ك-ل-م-ن-ه-و-لا-لا-لآ-لأ-لإ-ى-ي-ئ-ة-ء-ؤ_]+)/',$string,$matches);

  $i = 0;
  if ($str) {
   foreach ($matches[1] as $match) {
   $count = count($matches[1]);
   $keywords .= "$match";
    $i++;
    if ($count > $i) $keywords .= ", ";
   }
  } else {
  foreach ($matches[1] as $match) {
  $keyword[] = $match;
  }
  $keywords = $keyword;
 }
return $keywords;
}

用法:

    $string = "<p>#عاشت #فلسطين حرة عربية يوجد 2 هاشتاج لازم اشوفهم في الداتا بيز</p>";
$myArray = get_hashtags($string, $str = 0);
 $max = sizeof($myArray);
for($i = 0; $i < $max;$i++)
{
 echo "#".$myArray[$i]."<br />";
}
echo "$string"

结果

#عاشت
#فلسطين
#عاشت #فلسطين حرة عربية يوجد 2 هاشتاج لازم اشوفهم في الداتا بيز