如何基于正则表达式生成字符串

时间:2018-02-28 10:21:41

标签: php regex

我想基于正则表达式生成一个字符串。我有一个正则表达式和一组子模式的值,如下所示。

表达式:your-report-([a-z]+)-not-available 设置:array("monthly")

我需要每月更换一次子模式。我该怎么做?

3 个答案:

答案 0 :(得分:0)

我同意Kiko Software的观点。您可以将preg_replace与正则表达式一起使用,但可能会使它过于复杂。试试这个:

$parts = explode('-','your-report-([a-z]+)-not-available')
$parts[2] = "monthly"
$final = implode('-', $parts);

更容易阅读和维护IMO

答案 1 :(得分:0)

我认为您应该使用这种方式生成网址。没有必要为该任务使用正则表达式。

function generateUrl(string $route, array $parameters = [])
{
    return str_replace(array_keys($parameters), array_values($parameters), $route);
}

echo generateUrl('/your-report-{type}-not-available', [
    '{type}' => 'monthly',
]);

echo PHP_EOL;

echo generateUrl('/client/{clientId}/invoices/{invoiceId}', [
    '{clientId}' => 28,
    '{invoiceId}' => 768,
]);

上面的示例返回:

/your-report-monthly-not-available
/client/28/invoices/768

答案 2 :(得分:0)

如果您打算使用preg_replace,可以试试这个:

preg_replace('(\w*-\w*-)\w*', '${1}monthly', $string)