php 将字符串替换为 html 标签

php replace string to html tag

我想在 php 页面中显示来自 .txt 的内容,并将一些标签更改为 html 代码,如下所示:

改变这个:

[img: something.jpg]

为此:

<img src="something.jpg" />  

我试过使用preg_replace,但我不知道如何使用像/(){}^*.:这样的符号。 使用这样的东西从字符串中提取一些变量 是什么意思?

$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';

您可以使用以下正则表达式,如

\[(\w+):\s?(\w+.\w+)]

正则表达式解释

  • \[ : \[ 将逐字检查 [
  • (\w+): : (\w+) 捕获任意单词字符组 [a-zA-Z0-9_]+ 在一次和无限次之间,尽可能多次,: 将按字面意思检查 :
  • \s? : 匹配任何白色 space 字符 [\r\n\t\f ]? 0到1次之间,越多越好
  • (\w+.\w+) : 捕获任意单词字符组 [a-zA-Z0-9_]

所以像

一样使用preg_replace
echo preg_replace('/\[(\w+):\s?(\w+.\w+)]/',"< src='' />","[img: something.jpg]");

Regex

Demo

@Uchiha 有一个很棒的正则表达式 (+1!),但如果您想将它用于[shortcode] 类型的申请:

function shortcode($val = false)
    {
        return (!empty($val))? preg_replace_callback('/\[(\w+):\s?(\w+.\w+)]/',function($matches) {
                if(!empty($matches[2])) {
                        switch($matches[1]) {
                                case ('img'):
                                    return '<img src="'.$matches[2].'" />';
                            }
                    }
            },$val) : false;
    }

echo shortcode('[img: something.jpg]');