我想将URL转换为正则表达式,以使其与当前URL匹配。例如,我有一个网址 http://www.example.com/example.php 我希望它转换为 的 ^(HTTPS://)?????(WWW \)例如\ .COM \ /示例\ .PHP /(\ ?. )(#)$ < /强>
所以我存储它,每当用户点击附加了任意数量参数的url时,我会将该url与我的正则表达式匹配,并根据结果执行一些操作。
我发现了许多问题,但它们要么与一般网址(使用任何域名)匹配,要么与给定的正则表达式匹配。但我想要一个我将传递URL的函数,它将返回其正则表达式,我将使用它来匹配该特定域。
答案 0 :(得分:0)
我终于在stackoverflow和其他社区的帮助下创建了这段代码。这为我提供了针对给定URL的确切字符串。
<?php
function createrRegex($url) {
$var1 = '^(https?://)?';
$host = parse_url($url, PHP_URL_HOST);
$host_parts = explode('.', $host);
if (!empty($host_parts)) {
$length = count($host_parts);
foreach ($host_parts as $i => $part) {
if ($i == 0) {
if ($part == "www") {
$var1 .= '(' . $part . '\\\\.)?';
} else {
$var1 .= '' . $part;
$var1 .= ($i < ($length - 1)) ? '\\\\.' : '';
}
} else {
$var1 .= '' . $part;
$var1 .= ($i < ($length - 1)) ? '\\\\.' : '';
}
}
}
$path = '';
if ((parse_url($url, PHP_URL_PATH) != NULL)) {
$path = str_replace('/', '\\\\/', parse_url($url, PHP_URL_PATH));
$path = str_replace('.', '\\\\.', $path);
}
$var1 .= $path;
$var1 .= '/?(\\\\?.*)?(#.*)?$';
return $var1;
}
?>