我想更改以下文字
тест: фыв, фыв <br />
тест: фыв, фыв, фывфыв фыв, фыв, фыв <br />
счет: 123 <br />
высота: 111 <br />
конец: ок <br />
为:
тест: :: фыв, фыв :: <br />
тест: :: фыв, фыв, фывфыв фыв, фыв, фыв :: <br />
счет: :: 123 :: <br />
высота: :: 111:: <br />
конец: :: ок :: <br />
我尝试了什么:
$text = <<<HTML
тест<br /><br />тест: фыв, фыв<br />тест: фыв, фыв, фывфыв фыв, фыв, фыв<br /><br />счет: 123<br />высота: 111 <br />конец: ок<br /><br />
HTML;
$text = preg_replace('~(\w+:)\s*(.*?)(\<br /\>|\R)~', '\1 :: \2 :: \3', $text);
echo $text;
答案 0 :(得分:1)
([^:]+:)\s*(.*?)(<br\s*/>|\R)
\1 :: \2 :: \3
<强> PHP 强>:
$row['text'] = preg_replace('~([^:]+:)\s*(.*?)(<br\s*/>|\R)~', '\1 :: \2 :: \3', $row['text']);
说明:首先([^:]:
)匹配并捕获1个非冒号字符后跟冒号。接下来是一些可选的空格(\s*
)。然后我们lazily捕获0个字符(.*?
)。最后,我们捕获换行符(<br\s*/>
)或换行符(\R
)。
注意:我使用了~
分隔符,因此我们无需在换行符中转义/
。我们对第二个捕获组使用延迟重复,因为它允许我们抓取所有直到换行符或新行。