すべてのハッシュ タグを見つけるには、正規表現と を使用し、次preg_match_all()
のように置き換えpreg_replace()
ます。
$regex = '/(#[A-Za-z-]+)/';
preg_match_all( $regex, $string, $matches);
$string_f = preg_replace( $regex, "<a href='#'>$1</a>", $string);
次に、すべてのタグが の配列にあり$matches[1]
ます。
$tags_array = $matches[1];
implode()
次に、それをandでスペース区切りのリストに変換しarray_unique()
ます。
$tags = implode( ' ', array_unique( $tags_array));
これで完了です。このデモから、$tags
と$string_f
が次のことがわかります。
"#hashtag #another #example"
"Hello. This is a <a href='#'>#hashtag</a> and this is yet another <a href='#'>#hashtag</a>. This is <a href='#'>#another</a> <a href='#'>#example</a>."
ハッシュタグの他の文字 (数字など) については、$regex
適切に変更します。
編集:ただし、preg_replace_callback()
クロージャを使用すると効率が向上する可能性があるため、次のように正規表現を 1 回実行するだけで済みます。
$tags_array = array();
$string_f = preg_replace_callback( '/(#[A-Za-z-]+)/', function( $match) use( &$tags_array) {
$tags_array[] = $match[1];
return "<a href='#'>" . $match[1] . "</a>";
}, $string);
$tags = implode( ' ', array_unique( $tags_array));