正则表达式在每个单词周围加上引号

时间:2011-03-03 18:49:30

标签: php regex

假设我有一个像这样的字符串

$str = "this is my string";

我需要一个正则表达式才能拥有

$str = "'this','is','my','string'";

我知道这个

preg_match_all("#\w+#",$str,$mth);

我可以用单个单词获得一个数组,但我无法达到目标。 提前谢谢。

6 个答案:

答案 0 :(得分:4)

$str = "'" . implode("','", explode(' ', $str)) . "'"

不需要正则表达式。

答案 1 :(得分:2)

您可以改为使用explode

$parts = explode(" ", $str);

因此“$ parts”将是[“this”,“is”,“my”,“string]的数组。然后你可以遍历数组并在每个单词周围添加引号并最终执行:

$final = implode(",", $parts);

答案 2 :(得分:2)

你必须使用正则表达式吗?您可以使用str_replace将所有空格更改为序列',',然后在开头和结尾添加单引号:

$str = "'" . str_replace(" ", "','", $str) . "'";

答案 3 :(得分:1)

如果你有一系列单词,那只是一个简单的结论:

$quoted = '';
foreach($words as $word) {
    $quoted .= " '".$word."' ";
}

答案 4 :(得分:1)

您可以使用join / implode生成最终字符串。

$str = "'". join("','", $mth). "'";

或者您可以直接使用preg_replace

$str = "'". preg_replace("#\w+#", "','", $str). "'";

答案 5 :(得分:0)

def str = "Fred,Sam,Mike,Sarah"<br/>
str.replaceAll(~"(\\\b)", "'")

这在Groovy中运行良好。 (版本 - 1.8.4)