首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么preg_replace会给出这样的输出?

为什么preg_replace会给出这样的输出?
EN

Stack Overflow用户
提问于 2010-08-17 10:34:53
回答 1查看 112关注 0票数 3

我就是想不通,因为某些原因:

代码语言:javascript
复制
$string = "#mainparent {
position: relative;
top: 100px;
left: 100px;
width:4994px;
}";

$elementwidth = "88";

  $re1='(.*?)'; # Non-greedy match on filler
  $re2='(mainparent)';  # Word 1
  $re3='(.*)';  # Non-greedy match on filler
  $re4='(width:)';
  $re5='(.*)';  # Word 2
  $re6='(;)';   # Any Single Character 1
$pattern="/".$re1.$re2.$re3.$re4.$re5.$re6."/s";
    $replacement= '$1'.'$2'.'$3'. '$4'. $element_width .'$6';
    $return_string = preg_replace_component ($string, $pattern, $replacement );
     #c}

     echo $return_string; return;

输出这个(如下),我不明白为什么它要替换"width:“基于我设置它的方式..任何建议都将不胜感激

代码语言:javascript
复制
#mainparent { position: relative; top: 100px; left: 100px; 88; } 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-17 10:41:58

问题是您的替换字符串如下所示:

代码语言:javascript
复制
'$1$2$3$488$6'
       ^^^

因为紧跟在组号后面的字符是一个数字,所以它被解释为组48而不是组4。

请参阅preg_replace手册“示例#1使用后跟数字的反向引用”。使其工作所需的最小更改是用大括号将4括起来,以便将它与88分开。

代码语言:javascript
复制
$replacement = '$1' . '$2' . '$3'. '${4}'. $element_width . '$6';

但是这不是一个很好的方法,而且你的代码也有很多问题。

  • 正则表达式并不真正适合解析和修改$element_width.
  • It's。
  • 首先编写$elementwidth,然后编写$element_width.
  • It‘s,如果您只打算替换其中一个组,则不需要创建6个不同的组。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3498926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档