加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用preg_replace将字符串转换为标记

发布时间:2020-12-13 21:46:01 所属栏目:PHP教程 来源:网络整理
导读:这些正则表达式正在扼杀我,无论我读什么,我都无法理解这个概念. 这是我的问题,我确信它非常容易解决. [img:http://example.com/_data/025_img.jpg] 我想要的是用 img改变它所说的[img:…]的位置.标记并获得如下结果 img src='http://example.com/_data/025_
这些正则表达式正在扼杀我,无论我读什么,我都无法理解这个概念.

这是我的问题,我确信它非常容易解决.

[img:http://example.com/_data/025_img.jpg]

我想要的是用< img>改变它所说的[img:…]的位置.标记并获得如下结果

<img src='http://example.com/_data/025_img.jpg' border='0' />

我尝试了各种愚蠢的变化,但没有奏效.我对此并不感到惊讶.

编辑

附加信息:

我的情况如下.

>用户将图像上传到他们的个人资料
>图像名称存储在db中.
>它们列在具有textarea的表单旁边
>在键入文本时,我想通过添加以下标记[img:…]来为用户提供一个或多个图像,其中…是点击图像时将复制的链接从用户库中列出.
>我正在使用Codeigniter并将textarea传递到视图中并进入controller->模型,在那里它被各种事物的帮助程序清理… sql / quotes等.XSS也在CI上启用
>然后我想扫描文本并查看用户在哪里有[img:…]标签并将其交换为< img>标签并使用图片后跟文字呈现帖子.

因此,来自用户的实际输入将是符合的

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.您可以尝试通过调用parse_url来执行此操作.它将返回一组URL组件.确保该东西具有域和路径,并通过HTTP或HTTPS提供.

好的,但是当用户输入时会发生什么?

[img:http://www.example.com/foo.jpg" onmouSEOver="alert(document.cookie)"]

这是一个有效的… ish …将被parse_url成功解构的URL,并且可能会通过基本检查以确定格式良好.过滤空格和引号(单引号和双引号)将是一个很好的起点,但仍有许多事情需要担心.

底线是像这样的标记是XSS,or Cross-site scripting vulnerabilities中的向量.

你可以通过将URL传递到htmlspecialchars来缓解一些威胁.这至少会引用引号和括号,并且很难对那些处理过的人感到讨厌.只要注意字符集的愚蠢,一些非UTF-8字符编码可以包含ASCII引号…

您可能希望使用真正的标记语言(即使它只是降价),您可能希望在结果上使用基于白名单的HTML过滤器,如HTML Purifier.这将有助于保护您免受某种程度的精神错乱.

记住,如果他们不是为了得到你,你只是偏执狂.网络上到处都是愚蠢的人,他们是恶意的,人们是如此恶毒,以至于它是愚蠢的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读