我使用laravel创建一个简单的社交网络。用户可以在帖子区域键入@以获取他们的朋友列表以提及它们。像这样的链接中的每一个提及(使用来自github的zurb / tribute)
type='mention'
除了提及之外的普通链接没有type ='mention'
现在,当我收到帖子并将其插入数据库时,我需要获得帖子中提到的用户列表。我正在寻找具有if
的链接,如果有的话,我想让所有人的标题都插入到通知系统中。我需要在此if(stristr(request('post'),' type="mention" ')){
}
语句中添加哪些PHP代码?
{{1}}
答案 0 :(得分:1)
除了使用AST(抽象语法树)之外,最好的办法是在PHP端使用DOM,例如:
$string = '<a type="mention" href="/user/Jordan" title="Jordan">Jordan</a>';
$doc = new \DOMDocument();
$doc->loadHTML($string);
$xpath = new \DOMXPath($doc);
foreach ($xpath->query("//a[@type='mention']") as $a) {
$href = $a->getAttribute('href');
$title = $a->getAttribute('title');
echo sprintf("Found mention of %s with href of %s\n", $title, $href);
}
但是,我可能不会将A节点发送回服务器。您应该考虑以某种方式使其成为浏览器端实现的仅显示功能,并简单地发送&#34; @ jordan&#34;字符串回到服务器。