PHP заменить строку в HTML-тег

1

Я хочу отображать содержимое на php-странице из.txt и менять тег на html-код следующим образом:

Измените это:

[img: something.jpg]

К этому:

<img src="something.jpg" />  

Я пытался использовать preg_replace, но я понятия не имею, как использовать эти символы, например /(){}^*.: Что значит использовать такие вещи, чтобы извлечь некоторые переменные $1 $2 из строки?

$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
  • 0
    echo preg_replace("/\[img:\s*([^\]]+)\]/i","<img src='$1'>",$string)
  • 0
    eval.in/473133
Теги:
replace
preg-replace

2 ответа

2
Лучший ответ

Вы можете использовать следующее регулярное выражение, например:

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

Regex Пояснение

  • \[: \[ будет проверять [ буквально.
  • (\w+): (\w+) Захват групп любого символа слова [a-zA-Z0-9_]. + Между одним и неограниченным временем, как можно больше раз : проверяет : буквально
  • \s? : соответствует любому символу пробела [\r\n\t\f ]. ? Между ноль и один раз, сколько раз
  • (\w+.\w+): Захват группы любого символа слова [a-zA-Z0-9_]

Таким образом, используя preg_replace как

echo preg_replace('/\[(\w+):\s?(\w+.\w+)]/',"<$1 src='$2' />","[img: something.jpg]");

Regex

демонстрация

  • 0
    Но ОП не определил ни один из этих сценариев @Starkeen. Если ОП идентифицирует любой из этих сценариев, я буду обновлять согласно требованию.
2

@Uchiha имеет большое регулярное выражение (+1 для этого!), Но вы можете использовать preg_replace_callback() вместо этого, если вы хотите использовать его для приложения типа [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]');
  • 0
    Спасибо @Rasclatt +1 за обновление ответа до следующего уровня

Ещё вопросы

Сообщество Overcoder
Наверх
Меню