私は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()
ただし、1回の呼び出しだけで、はるかに短くてエレガントな正規表現で実現できると思います。
単一の preg_replace() 呼び出しだけでそれを行う方法はありますか? 例えば:
preg_replace("/ |.{" . round(strlen($str)/2) . "}/", "$0</span>", $str, 1)