我正在尝试像这样获取一串文本:
$string = "This (1) is (2) my (3) example (4) text";
在括号内有正整数的每个情况下,我想用整数本身替换它。
我现在使用的代码是:
$result = preg_replace("\((\d+)\)", "$0", $string);
但我不断收到
分隔符不得为字母数字或反斜杠。
警告
有什么想法吗? 我知道这里还有其他问题可以回答这个问题,但我对正则表达式的了解不足以将其切换到这个示例。
你就快到了。您正在使用:
$result = preg_replace("((\d+))", "$0", $string);
preg_*
函数族的参数
应该以一对分隔
分隔符。由于您没有使用
任何分隔符都会出现该错误。(
和 )
是正则表达式中的元字符,
意味着它们有特殊的意义。
因为你想匹配文字 open
括号和右括号,
你需要使用 \
来逃避它们。
\
之后的任何内容都会被处理
从字面上看。\d+
。但被俘获的
整数将位于 $1
而不是 $0
。 $0
将有整场比赛,即
括号内的整数。如果您完成上述所有更改,您将得到:
$result = preg_replace("#\((\d+)\)#", "$1", $string);
您需要有一个分隔符,
/
工作正常。
您必须转义
(
和 )
字符,这样它就不会认为这是另一个分组。
此外,这里的替换变量从 1 开始,而不是 0(0 包含完整文本匹配,其中包括括号)。
$result = preg_replace("/\((\d+)\)/", "\\1", $string);
这样的东西应该有效。如有任何其他问题,请访问 PHP 的
preg_replace()
文档 - 它真的很好。
尝试:
<?php
$string = "This (1) is (2) my (3) example (4) text";
$output = preg_replace('/\((\d)\)/i', '$1', $string);
echo $output;
?>
括号字符是正则表达式中的特殊字符。你需要逃离它们才能使用它们。
分隔符不能是字母数字或反斜杠。,
尝试在“/ .... /”中输入参数,如下所示。否则代码将输出 >>> 分隔符不能是字母数字或反斜杠。
$yourString='hi there, good friend';
$dividorString='there';
$someSstring=preg_replace("/$dividorString/",'', $yourString);
echo($someSstring);
// hi, good friend
。 。 为我工作。