如何用其他东西替换两个星号之间的文本?

时间:2015-07-20 11:13:42

标签: php html string

我允许用户在textarea中输入文本,但是在*https://example.com/image.png*(由星号包围的URL)写入时,需要获取URL(它应该始终是URL)然后它将插入将其转换为<img />标记,然后将URL和星号替换为图像标记。

我能够抓住一次这个事件,但我不确定如何多次找到这个。在一个例子中,它将取代原始的:

*https://example.com/image.png*

使用:

<img src="https://example.com/image.png" />

修改

举个简单的例子:

输入:

A load of random text *http://example.com/image.png* some more text. Some more text *http://example.com/image2.jpg* the end.

它需要能够找到两个星号中的每一个并获得内部的内容。

例如:

http://example.com/image.png
http://example.com/image2.jpg

然后我可以使用URL来显示图像。

然后完成这样的事情:

A load of random text <img src="http://example.com/image.png" /> some more text. Some more text <img src="http://example.com/image2.jpg" /> the end.

1 个答案:

答案 0 :(得分:6)

这可以使用正则表达式完成:

$string = 'A load of random text *http://example.com/image.png* some more text. Some more text *http://example.com/image2.jpg* the end.';
$pattern = '/\*(.*?)\*/';
$replacement = '<img src="$1" />';
echo preg_replace($pattern, $replacement, $string);

关于模式,\*匹配文字*(.*?)捕获两颗星之间的任何内容(但由尽可能少的字符组成)。

查看正则表达式here。阅读preg_replace here上的PHP文档。

如果这接受用户输入,您应该考虑XSS问题。