PHP正则表达式,用于连接URL,但忽略卷曲撇号

PHP正则表达式,用于连接URL,但忽略卷曲撇号,php,regex,drupal-7,Php,Regex,Drupal 7,我最近将一个网站迁移到Drupal。一些旧的页面标题在单词中包含卷曲的撇号,如what's 在进行此迁移时,我们更改了许多URL,以简化站点布局并使URL更直观 我正在尝试建立一个转发系统,它捕获对旧URL的请求,然后根据新页面的标题将用户重定向到新URL 除了标题中包含卷曲撇号的页面外,这非常有效,因为Drupal在它创建的URL中对这些卷曲进行编码,但是我的转发器删除了它们,我需要阻止它这样做 目前,我使用以下表达式清理页面标题: /[^a-z\-\d]+/i(带预替换) …用连字符(-)代

我最近将一个网站迁移到Drupal。一些旧的页面标题在单词中包含卷曲的撇号,如
what's

在进行此迁移时,我们更改了许多URL,以简化站点布局并使URL更直观

我正在尝试建立一个转发系统,它捕获对旧URL的请求,然后根据新页面的标题将用户重定向到新URL

除了标题中包含卷曲撇号的页面外,这非常有效,因为Drupal在它创建的URL中对这些卷曲进行编码,但是我的转发器删除了它们,我需要阻止它这样做

目前,我使用以下表达式清理页面标题:

/[^a-z\-\d]+/i
(带预替换)

…用连字符(
-
)代替任何非标准字符和空格

我意识到卷曲撇号的编码是不同的,因此被这个表达式所捕获和移除

我如何通知我的正则表达式忽略卷曲撇号而不将它们转换为连字符?

您可能会发现使用它是有用的


$var
将保留“'”字符,但对无效字符进行清理。

有多少种不同类型的撇号?如果只有一个,为什么不简单地用str_替换(“'”,“,$value)”替换它们呢?谢谢Bernhard。问题是我需要保留它们而不是删除它们,因为Drupal在迁移过程中生成的所有URL都包含它们!因此,我想保留卷发,而目前我正在移除它们,但我找不到这样做的方法。好的,克里斯,那么[^a-z-\d']呢?顺便说一下,您可以使用REPLACE()Cheers删除数据库查询中的撇号;我考虑过这一点,但问题是它限制了未来的发展,延续了糟糕的过去!我想要一个简单的独立解决老问题的方法。。。在提出这个问题之前,当我研究这个问题时,我确实尝试了你的建议,但没有奏效。我想知道数据库编码是否是问题所在。我不认为这是UTF-8,但我没有足够的专家来理解它的含义,或者如何处理它。
$var="http://www.w3s'choo��ls.co�m";

var_dump(filter_var($var, FILTER_SANITIZE_URL));