0

キーワードを自動的にキャッチできる簡単なチュートリアルを行っています。コードは次のとおりです。

$content = "#abc i love you #def #you , and you?";
preg_match_all("/[\n\r\t]*\#(.+?)\s/s",$content, $tag_matches);
print_r($tag_matches);

output:-
Array ( [0] => Array ( [0] => #abc [1] => #def [2] => #you ) [1] => Array ( [0] => abc [1] => def [2] => you ) )

'#' symbol with words are the keywords

出力は正しいですが、キーワードの横に句読点記号を挿入すると、たとえば #you, 、出力は you, になります。キーワードの後に​​句読点記号をフィルタリングする方法を教えてください。

これに加えて、 #def#you, のようにキーワードを一緒に挿入すると、出力は def#you, is everyone can help me to separate it/

皆さんありがとう。

4

2 に答える 2

1

あなたは試すことができます:

    /[\n\r\t]*\#([\w]*)\s/s

*は実際には+?と同じ動作をします。を一致させることによって。あなたはすべてのキャラクターです。ハイフンでつながれたタグがある場合は、角かっこ内に-を追加することをお勧めします。

于 2012-08-07T17:41:37.090 に答える
1

空白の代わりに単語境界 を使用してみてください。これにより、単語文字 (つまり、) 以外に到達すると一致が停止します。\b\s[a-zA-Z0-9_]

/[\n\r\t]*\#(.+?)\b/s

概念的には、そこに空白を入れる (つまり、単語の終わりを示す) ことで、とにかくやろうとしていたことです。

于 2012-08-07T17:30:30.477 に答える