php – 使用preg_replace将字符串转换为标记
这些正则表达式正在扼杀我,无论我读什么,我都无法理解这个概念.
这是我的问题,我确信它非常容易解决. [img:http://example.com/_data/025_img.jpg] 我想要的是用< img>改变它所说的[img:…]的位置.标记并获得如下结果 <img src='http://example.com/_data/025_img.jpg' border='0' /> 我尝试了各种愚蠢的变化,但没有奏效.我对此并不感到惊讶. 编辑 附加信息: 我的情况如下. >用户将图像上传到他们的个人资料 因此,来自用户的实际输入将是符合的 The brown fox jumped over foo bar [img:http://example.com/_data/025_img.jpg] and then went to bed [img:http://example.com/_data/0277_img.jpg] while thinking about [img:http://example.com/_data/1115_img.jpg] 这就是我要求preg_replace而不是preg_match的原因. preg_match不会使文本跟随图像. 解决方法
让我们先轻松一点.
/[img:([^]]+)]/ 那是: >文字[img: >由…组成的字符类 >不是文字的东西] >重复至少一次 >一个文字] 通过preg_match运行它,匹配数组中的元素1很可能是一个可以轻松插入到img标记中的图像URL. 但你不应该.不是马上. 首先,这是不安全的.写这篇文章会发生什么? [img:javascript:alert(document.cookie);] Uhoh.这不会是好事. 您可能希望确保用户声称的URL实际上是URL.您可以尝试通过调用 好的,但是当用户输入时会发生什么? [img:http://www.example.com/foo.jpg" onmouSEOver="alert(document.cookie)"] 这是一个有效的… ish …将被parse_url成功解构的URL,并且可能会通过基本检查以确定格式良好.过滤空格和引号(单引号和双引号)将是一个很好的起点,但仍有许多事情需要担心. 底线是像这样的标记是XSS,or Cross-site scripting vulnerabilities中的向量. 你可以通过将URL传递到 您可能希望使用真正的标记语言(即使它只是降价),您可能希望在结果上使用基于白名单的HTML过滤器,如HTML Purifier.这将有助于保护您免受某种程度的精神错乱. 记住,如果他们不是为了得到你,你只是偏执狂.网络上到处都是愚蠢的人,他们是恶意的,人们是如此恶毒,以至于它是愚蠢的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |