加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 正则表达式帮助:如何匹配包含“或”运算符的正则表达式

发布时间:2021-08-28 03:48:53 所属栏目:大数据 来源: https://www.jb51.cc
导读:我正在使用PHP的preg_replace(). 基本上我有两种可能的字符串匹配: 你好真实世界 问候 这是我想要完成的事情: 你好 / span真实世界 格力 / span tings 规则解释:如果字符串包含空格,请插入 / span在第一个空格字符之后.如果字符串不包含空格(单词),请插入

我正在使用PHP的preg_replace().

基本上我有两种可能的字符串匹配:

>你好真实世界
>问候

这是我想要完成的事情:

>你好< / span>真实世界
>格力< / 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)

解决方法:

如果字符串中有空格,则正则表达式引擎不会提前知道.尽管您确实需要多个函数,但您根本不需要使用正则表达式来执行此操作:

$pos = strpos($str, ' ');
if ($pos === false) {
   //No space found
   $pos = intval(strlen($str) / 2);
}
else {
   //we want to insert *after* the space
   $pos++;
}
$str = substr_replace($str, '</span>', $pos, 0);

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读