PHP preg_replace для превращения ** xyz ** в <b>xyz </b> - PullRequest
5 голосов
/ 26 октября 2010

Я решил, ради интереса, сделать что-то похожее на уценку. Имея небольшой опыт работы с регулярными выражениями в прошлом, я знаю, насколько они мощные, поэтому они будут тем, что мне нужно.

Итак, если у меня есть эта строка:

    Hello **bold** world

Как я могу использовать preg_replace, чтобы преобразовать это в:

    Hello <b>bold</b> world

Я предполагаю, что-то вроде этого?

    $input = "Hello **bold** world";
    $output = preg_replace("/(\*\*).*?(\*\*/)", "<b></b>", $input);

Ответы [ 4 ]

9 голосов
/ 26 октября 2010

Закрыть:

$input = "Hello **bold** world";
$output = preg_replace("/\*\*(.*?)\*\*/", "<b>$1</b>", $input);
2 голосов
/ 26 октября 2010

Я считаю, что есть PHP-пакет для рендеринга Markdown.Вместо того, чтобы использовать свой собственный, попробуйте использовать существующий набор кода, который был написан и протестирован.

1 голос
/ 26 октября 2010

Ммм Я думаю, это может сработать

$output = preg_replace('/\*\*(.*?)\*\*/', '<b>$1</b>', $input);

Вы найдете все последовательности **something**, а затем замените всю найденную последовательность жирным тегом и внутри него ($1) первой захваченной группы(скобки в выражении).

0 голосов
/ 26 октября 2010
$output = preg_replace("/\*\*(.*?)\*\*/", "<b>$1</b>", $input);
...