私のデータベースでハッシュタグを検索するスクリプトがあります。$ tagが定義されていてハッシュタグである特定のものについてs.dataを検索する必要があります。 #peter rhashtag #peterを検索すると#peters #peterson #peterpeterの結果が得られます。どのようにそれだけで正確に#peterより具体的に定義された変数でLIKEを検索する
私が試してみました
REGEXP '[[:<:]]#$tag[[:>:]]'
を照合結果を検索するが、それがどんな結果を返すdidntのように、私は最後に文字列を切断しません。これが唯一の単語の開始前に一致し、#
が単語文字ではないので、
AND s.data REGEXP '#$tag[[:>:]]'
が
#
前
[[:<:]]
を使用しないでください: は、以下の私の元のコード
$sql = "SELECT s.*, u.avatar
FROM status AS s
LEFT JOIN users AS u ON u.username = s.author
WHERE s.author IN ('$friendsCSV') AND (s.data LIKE '%#$tag%') AND (s.type='a' OR s.type='c' OR s.type='d')
ORDER BY s.postdate DESC LIMIT 20";
これは有効な正規表現ではありません。 '\\ b#$ tag \\ b'のようなものを試してみてください。 –
@JonathanKuhn MySQLは '\ b'を使用しません。 – Barmar
@Barmar bah、ありがとう。私は今それを見る。 –