我有一个类似"apple|banana|peach|cherry"
的字符串。
如果匹配,如何使用正则表达式搜索此列表并将其他字符串替换为某个值?
例如:
$input = 'There is an apple tree.';
将其更改为:"There is an <fruit>apple</fruit> tree."
谢谢, 阿曼达
答案 0 :(得分:8)
试试这个:
<?php
$patterns ="/(apple|banana|peach|cherry)/";
$replacements = "<fruit>$1</fruit>";
$output = preg_replace($patterns, $replacements, "There is an apple tree.");
echo $output;
?>
有关详细信息,请查看php manual on preg_replace
更新: @Amanda:根据您的评论,您可以将此代码修改为:
$patterns ="/(^|\W)(apple|banana|peach|cherry)(\W|$)/";
$replacements = "$1<fruit>$2</fruit>$3";
避免匹配弹劾和废话
答案 1 :(得分:0)
虽然,如果你想直接匹配,那么使用str_replace或str_ireplace会更快:
$text = "some apple text";
$fruits = explode("|", "apple|orange|peach");
$replace = array('replace apple', 'replace orange', 'replace peach');
$new = str_replace($fruits, $replace, $text);
答案 2 :(得分:0)
$input = 'There is an apple tree.';
$output = preg_replace('/(apple|banana|peach|cherry)/', "<fruit>$1</fruit>", $input);
答案 3 :(得分:0)
总体而言,可能有更好的方法来做到这一点,但这将涉及您提供有关您的设置和总体目标的更多详细信息。但你可以这样做:
$input = preg_replace('~(apple|banana|peach|cherry)~','<fruit>$1</fruit>',$input);