PHP正则表达式连字符URL但忽略了撇号

时间:2017-02-07 13:14:26

标签: php regex drupal-7

我最近将一个网站迁移到了Drupal。一些旧页面标题包含像what's这样的单词中的撇号。

在进行此迁移时,我们更改了大量网址,以简化网站布局并使网址更直观。

我正在尝试设置一个转发系统来捕获旧网址的请求,然后将用户重定向到新网址,该网址基于新网页的标题。

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

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

/[^a-z\-\d]+/i(带有preg_replace)

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

我意识到卷曲撇号的编码方式不同,因此被这个表达式捕获并删除。

如何通知我的正则表达式忽略撇号并不将它们变成连字符?

1 个答案:

答案 0 :(得分:0)

您可能会发现使用filters有用。

$var="http://www.w3s'choo��ls.co�m";

var_dump(filter_var($var, FILTER_SANITIZE_URL));

$var会保留" ' "性格,但消毒无效的。