我想基于正则表达式生成一个字符串。我有一个正则表达式和一组子模式的值,如下所示。
表达式:your-report-([a-z]+)-not-available
设置:array("monthly")
我需要每月更换一次子模式。我该怎么做?
答案 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)