如何在一个变量上使用多个REGEX?

时间:2015-12-22 14:21:26

标签: php regex

我有一个包含多个REGEX的函数。这是我的功能:

function generate($str) {
  $str = preg_replace(/\*\*(.*?)\*\*/, "<b>$1</b>", $str);
  $str = preg_replace(/__(.*?)__/, "<u>$1</u>", $str);
  $str = preg_replace(/\*(.*?)\*/, "<i>$1</i>", $str);
  $str = preg_replace(/--(.*?)--/, "<del>$1</del>", $str);
  $str = preg_replace(/`(.*?)`/, "<code>$1</code>", $str);
  return $str;
}

现在我想知道这是^标准方式吗?在一个变量上覆盖几次?有没有更好的方法?

1 个答案:

答案 0 :(得分:2)

documentation for preg_replace表示前两个参数可以是数组或字符串。如果它们是数组,则第一个数组中的每个匹配项将替换为第二个数组中的相应字符串。 E.g:

function generate($str) {
  return preg_replace(
    array(
      '/\*\*(.*?)\*\*/',
      '/__(.*?)__/',
      '/\*(.*?)\*/',
      '/--(.*?)--/',
      '/`(.*?)`/'
    ),
    array(
      "<b>$1</b>",
      "<u>$1</u>",
      "<i>$1</i>",
      "<del>$1</del>",
      "<code>$1</code>"
    ),
    $str
  );
}