Php 如何替换紧跟数字的标签?
我想替换为Php 如何替换紧跟数字的标签?,php,regex,preg-replace,str-replace,Php,Regex,Preg Replace,Str Replace,我想替换为FALSE,其中字符串包含一个#后跟一个整数 这是我的代码: $newlogicexpression = '#1 and (1743327.12 > 10)'; if( strpos( $newlogicexpression, '#' ) !== false ) { $newlogicexpression = str_replace('#', 'FALSE', $newlogicexpression); $this->logger->debug($n
FALSE
,其中字符串包含一个#
后跟一个整数
这是我的代码:
$newlogicexpression = '#1 and (1743327.12 > 10)';
if( strpos( $newlogicexpression, '#' ) !== false ) {
$newlogicexpression = str_replace('#', 'FALSE', $newlogicexpression);
$this->logger->debug($newlogicexpression);
}
我的预期结果是:FALSE和(1743327.12>10)
我当前的输出是:false 1和(1743327.12>10)
根据post方法,#后面的整数可能不同
替换需要在字符串中的任何位置进行。有很多方法可以做到这一点。
例如,您可以使用以下正则表达式:
\d+
因此:
$newlogicexpression = '#1 and (1743327.12 > 10) and #2';
if( strpos( $newlogicexpression, '#' ) !== false ) {
$newlogicexpression = preg_replace('/#\d+/', 'FALSE', $newlogicexpression);
$this->logger->debug($newlogicexpression);
}
有很多方法可以做到这一点。
例如,您可以使用以下正则表达式:
\d+
因此:
$newlogicexpression = '#1 and (1743327.12 > 10) and #2';
if( strpos( $newlogicexpression, '#' ) !== false ) {
$newlogicexpression = preg_replace('/#\d+/', 'FALSE', $newlogicexpression);
$this->logger->debug($newlogicexpression);
}
只有一种合理的方法可以做到这一点——使用
preg\u replace()
——并且不需要进行条件检查。如果一个数字前面有一个标签符号,则将进行替换(如果可能,多次)。如果模式不匹配,则输入字符串保持不变
在模式中,我使用波浪线作为模式分隔符。#
不需要转义,就可以从字面上勇敢地表达出来<代码>\d表示任何数字字符(0到9)。+
表示任何数字的一次或多次出现
实际上,以下子字符串将被替换:#1
、#3098426893219
和#04
。可以在字符串中的任何位置找到匹配项
代码:()
输出:
FALSE and (1743327.12 > 10)
2018-12-08更新: 我不完全清楚为什么我今天在没有任何解释的情况下输掉了一次升级投票,但如果您只想调用
$this->logger->debug($newlogicexpression)代码>当进行替换时,您可以使用此选项(仍然只有一个函数调用):
只有一种合理的方法可以做到这一点——使用preg\u replace()
——并且不需要进行条件检查。如果一个数字前面有一个标签符号,则将进行替换(如果可能,多次)。如果模式不匹配,则输入字符串保持不变
在模式中,我使用波浪线作为模式分隔符。#
不需要转义,就可以从字面上勇敢地表达出来<代码>\d
表示任何数字字符(0到9)。+
表示任何数字的一次或多次出现
实际上,以下子字符串将被替换:#1
、#3098426893219
和#04
。可以在字符串中的任何位置找到匹配项
代码:()
输出:
FALSE and (1743327.12 > 10)
2018-12-08更新: 我不完全清楚为什么我今天在没有任何解释的情况下输掉了一次升级投票,但如果您只想调用
$this->logger->debug($newlogicexpression)代码>当进行替换时,您可以使用此选项(仍然只有一个函数调用):