我正在使用 php 的preg_replace()
.
基本上我有 2 种可能的字符串来匹配:
- 你好现实世界
- 问候
这是我希望完成的事情:
Hello </span>Real World
Gree</span>tings
规则说明:如果字符串包含空格,</span>
则在第一个空格字符之后插入。如果字符串不包含空格(单词),</span>
则在字符串的中间插入(如果为奇数字符,则插入+/-)。
到目前为止,我想出了一个长期有效的解决方案:
<?php
$str = "Hello Real World";
echo preg_match("/ /", $str) ? preg_replace("/ /", " </span>", $str, 1) : preg_replace("/.{" . round(strlen($str)/2) . "}/", "$0</span>", $str, 1);
?>
但是,我相信它可以通过一个更短、更优雅的正则表达式来完成,只需一次preg_replace()
调用。
知道如何只用一个 preg_replace() 调用来做到这一点吗?例如:
preg_replace("/ |.{" . round(strlen($str)/2) . "}/", "$0</span>", $str, 1)