为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 PHP preg_replace 交换字符串?

如何使用 PHP preg_replace 交换字符串?

PHP
鸿蒙传说 2022-11-12 13:46:19
我有 CSS 代码,我想将left 与 right和right 与 left交换。这是示例 CSS:.test{text-align:left;margin-left:10px;float:right}.test_right{text-align:left;border-right:0px;border-left:1px}.test_left{float:right}应该:.test{text-align:right;margin-right:10px;float:left}.test_right{text-align:right;border-left:0px;border-right:1px}.test_left{float:left}我有以下 preg_replace,但它只匹配每个 {} 中的 1 个实例,我需要它匹配所有实例。$css = preg_replace('/({.*?)left(.*?})/i', '$1right$2', $css);另一个问题是我不能左右交换,因为在我运行第一个 preg_replace 之后一切都会正确。我该如何解决这个问题?也许使用 preg_replace_callback?
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

我能够成功地弄清楚。


function callback($match)

{

    $matchit = strtr($match[0], array('left' => 'right', 'right' => 'left'));

    return $matchit;

}


$css= preg_replace_callback('/{(.*?)}/i', 'callback', $css);

echo $css;

preg_replace_callback 返回 { 和 } 之间的任何内容。回调函数正在替换左右。


我正在进一步完善此功能以添加某种忽略触发器,以便 PHP 将忽略某些类/ID。此外,它还需要对填充和边距等进行一些反转。整个事情将被制作成一个类,供任何使用 PHP 的人轻松地将 CSS 转换为 RTL。


更新:


您可以改用此 preg_replace:


$css = preg_replace_callback('/{(?!\/\*i\*\/)(.*?)}/i', 'callback', $css);

然后您可以将 /*i*/ 放入您希望它忽略的任何行中。例如:


.test{/*i*/margin-left:0px;text-align:right}


查看完整回答
反对 回复 2022-11-12
  • 1 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号