Я работал над этим регулярным выражением, которое я использую в preg_replace, чтобы добавить divs
а также /divs
вокруг текста, который имеет *
вокруг него. Сейчас щас используют два *
s. Что бы быть верным способом сделать это только с одним *
Текущий
<?php
$errors = 1;
$arr['ERR'] = '';
$arr['ERR'] .= '*<i>Error 1</i>*';
$arr['ERR'] .= '*<i>Error 2</i>*';
$arr['ERR'] .= '*<i>Error 3</i>*';
$arr['ERR'] .= '*<i>Error 4</i>*';
$arr['ERR'] .= '*<i>Error 5</i>*';
$arr['TOF'] = 'Success';
$arr = preg_replace('#\*(.+?)\*#', '<div>$1</div>', $arr);
print_r( $arr );
// outputarray (
[ERR] => <div><i>Error 1</i></div><div><i>Error 2</i></div><div><i>Error 3</i></div><div><i>Error 4</i></div><div><i>Error 5</i></div>
[TOF] => Success
)?>
Попытка
$arr['ERR'] = '';
$arr['ERR'] .= '*<i>Error 1</i>';
$arr['ERR'] .= '*<i>Error 2</i>';
$arr['ERR'] .= '*<i>Error 3</i>';
$arr['ERR'] .= '*<i>Error 4</i>';
$arr['ERR'] .= '*<i>Error 5</i>';
$arr['TOF'] = 'Success';
$arr = preg_replace('#\*(.+?)#', '<div>$1</div>', $arr);
//just one * but get the same results as above.
Как можно сделать регулярное выражение, чтобы использовать только один *
Вы можете использовать это регулярное выражение:
\*(.+?)(?![^*])
Смотритель утверждает, что матч перед другой звездой или в конце матча.
Вот regex demo.
Других решений пока нет …