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

问题描述 投票:-2回答:3

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

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

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

php regex
3个回答
0
投票

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

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

阅读和维护IMO要容易得多


0
投票

我认为你应该用这种方式生成URL。无需为该任务使用正则表达式。

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

0
投票

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

preg_replace('(\w*-\w*-)\w*', '${1}monthly', $string)
© www.soinside.com 2019 - 2024. All rights reserved.