首页 > 解决方案 > 在 PHP 中重新格式化字符串以添加双引号和反斜杠

问题描述

我希望有人能帮助我。我在 PHP 中有一个变量,我需要在 bash 脚本中使用它。变量中的字符串需要转换为特定格式,以将字符串中的每个单词用双引号和反斜杠括起来。

具体如下:

$raw = "amazon,facebook,reddit";

所需函数的输出需要如下所示:

\"amazon\",\"facebook\",\"reddit\"

显然 $raw 变量可以容纳或多或少的以逗号分隔的单词。

我可以使用 str_replace 做的最好的事情是:

$trfm = '"' . str_replace(",", "\",\"", $raw) . '"';

echo $trfm;

"amazon","facebook","reddit" 

所以我需要弄清楚如何添加反斜杠。

谢谢

标签: php

解决方案


你可以用array_walk()这个。

// Input
$raw = "amazon,facebook,reddit";

// Turn items into an array, separated by commas
$items = explode(",", $raw); // ['amazon', 'facebook', 'reddit']

// Walk over each item in the array, and transform it
array_walk($items, function (&$value) {
  $value = '\"' . $value . '\"'; 
});

// Output: \"amazon\",\"facebook\",\"reddit\"
echo implode(",", $items);

为了完整起见,如果您不想将其拆分为一个数组,并且想采用将逗号与反斜杠交换的方法,则可以执行以下操作。请注意使用双引号使用的双斜杠,以避免必须转义这些,您可以使用单引号代替。

// Input
$raw = "amazon,facebook,reddit";

// Notice the double backslash below: \\
echo "\\\"" . str_replace(",", "\\\",\"", $raw) . "\\\"";

// Notice the single quotes and the lack of escaping with double backslash:
echo '\"' . str_replace(",", '\",\"', $raw) . '\"';

推荐阅读