Closed poplite closed 6 years ago
如果评论包含网页链接和图片,Disqus 评论框上显示的评论会被截断。
如图,评论从链接开始的地方截断:
原生评论框能够正常显示:
造成问题的相关代码: https://github.com/fooleap/disqus-php-api/blob/4a014e1ac98ce4eb5f59dcb96b3de04927866864/api/init.php#L318
看了一些资料,正则表达式中第二个.*?会匹配网页链接与图片链接之间的所有内容,然后匹配的内容被移除掉了。
.*?
重现代码:
<?php $mesg = '<p>这是谷歌(<a href="https://www.google.com" target="_blank" title="https://www.google.com">https://www.google.com</a>)的 LOGO: <a href="https://uploads.disquscdn.com/images/af8490031b8fa919bfcd6b205e7bf8391e81c315af15c201520d3fabfa1e4bfb.jpg" target="_blank" title="https://uploads.disquscdn.c...">https://uploads.disquscdn.c...</a></p>'; $imgpat = '/<a(.*?)href="(.*?(disquscdn.com|media.giphy.com).*?\.(jpg|gif|png))"(.*?)>(.*?)<\/a>/i'; $mesg = preg_replace($imgpat, '', $mesg); echo $mesg; // 输出:<p>这是谷歌(</p> ?>
修复后:
如果评论包含网页链接和图片,Disqus 评论框上显示的评论会被截断。
如图,评论从链接开始的地方截断:
原生评论框能够正常显示:
造成问题的相关代码: https://github.com/fooleap/disqus-php-api/blob/4a014e1ac98ce4eb5f59dcb96b3de04927866864/api/init.php#L318
看了一些资料,正则表达式中第二个
.*?
会匹配网页链接与图片链接之间的所有内容,然后匹配的内容被移除掉了。重现代码:
修复后: