如何使用 preg_replace() 获取结果文本和替换项?
How to get both resulting text and the replaced items using preg_replace()?
如何在 PHP 中使用 preg_replace()(或任何其他函数)获取结果文本和替换文本?
// Have:
$txt = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
// Desired result:
$txt == "Lorem ipsum dolor sit amet, WAS_REPLACED consectetur adipiscing elit."
$replaced_text == 'REPLACE_ME'
preg_replace() 似乎 return 要么替换了部分,要么生成了文本。
变量在 preg_replace() 调用后似乎是空的;
EDIT2:得到了外界的帮助,这是最终版本:
$re = "/REPLACE_ME/i";
$str = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
$subst = "WAS_REPLACED";
$replacements;
$result = preg_replace_callback(
$re,
function ($matches) use(&$replacements, $subst) {
$replacements = $matches[0];
return $subst;
},
$str, 1);
echo $result."\n";
echo $replacements;
(REPLACE_ME)
直接使用this.See演示。
https://regex101.com/r/vD5iH9/56
$re = "/(REPLACE_ME)/im";
$str = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
$subst = "WAS_REPLACED";
$result = preg_replace($re, $subst, $str);
</code> 或 <code>
将包含替换的文本。
编辑:要获得 Replaced content
,您可以使用 this.Check 数组 $matches
$re = "/(REPLACE_ME)/im";
$str = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
preg_match_all($re, $str, $matches);
将变量放在使用 .
运算符连接的 php 分隔符内。
$txt = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
$text_to_replace = 'REPLACE_ME';
$replaced_text = 'WAS_REPLACED';
echo preg_replace('~'.$text_to_replace.'~', $replaced_text, $txt);
输出:
Lorem ipsum dolor sit amet, WAS_REPLACED consectetur adipiscing elit.
试试这个。
$txt = "Lorem ipsumdolor sit amet REPLACE_ME consectetur adipiscing elit.";
$replaced_text=preg_replace("/REPLACE_ME/","REPLACED_TEXT",$txt);
如果成功找到并替换文本,给定的变量将填充所需的输出。
如何在 PHP 中使用 preg_replace()(或任何其他函数)获取结果文本和替换文本?
// Have:
$txt = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
// Desired result:
$txt == "Lorem ipsum dolor sit amet, WAS_REPLACED consectetur adipiscing elit."
$replaced_text == 'REPLACE_ME'
preg_replace() 似乎 return 要么替换了部分,要么生成了文本。 变量在 preg_replace() 调用后似乎是空的;
EDIT2:得到了外界的帮助,这是最终版本:
$re = "/REPLACE_ME/i";
$str = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
$subst = "WAS_REPLACED";
$replacements;
$result = preg_replace_callback(
$re,
function ($matches) use(&$replacements, $subst) {
$replacements = $matches[0];
return $subst;
},
$str, 1);
echo $result."\n";
echo $replacements;
(REPLACE_ME)
直接使用this.See演示。
https://regex101.com/r/vD5iH9/56
$re = "/(REPLACE_ME)/im";
$str = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
$subst = "WAS_REPLACED";
$result = preg_replace($re, $subst, $str);
</code> 或 <code>
将包含替换的文本。
编辑:要获得 Replaced content
,您可以使用 this.Check 数组 $matches
$re = "/(REPLACE_ME)/im";
$str = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
preg_match_all($re, $str, $matches);
将变量放在使用 .
运算符连接的 php 分隔符内。
$txt = "Lorem ipsum dolor sit amet, REPLACE_ME consectetur adipiscing elit.";
$text_to_replace = 'REPLACE_ME';
$replaced_text = 'WAS_REPLACED';
echo preg_replace('~'.$text_to_replace.'~', $replaced_text, $txt);
输出:
Lorem ipsum dolor sit amet, WAS_REPLACED consectetur adipiscing elit.
试试这个。
$txt = "Lorem ipsumdolor sit amet REPLACE_ME consectetur adipiscing elit.";
$replaced_text=preg_replace("/REPLACE_ME/","REPLACED_TEXT",$txt);
如果成功找到并替换文本,给定的变量将填充所需的输出。