用破折号替换所有空格,但不用重音字符替换 - PHP

时间:2017-11-23 20:48:24

标签: php

我想用破折号替换空格,但代码也用破折号替换重音字符:

$username = preg_replace("![^a-Z0-9]+!i", "-", $username);

如何将带有重音符号的字母留下不用短划线代替?

1 个答案:

答案 0 :(得分:2)

如果您只是在更改空格,请在RegEx中尝试匹配空格。

@Directive({selector: 'router-outlet', exportAs: 'outlet'})
export class RouterOutlet implements OnDestroy, OnInit {
    ...
    activateWith(activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver|null) {
        ...
        // Calling `markForCheck` to make sure we will run the change detection when the
        // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.
        this.changeDetector.markForCheck();
        this.activateEvents.emit(this.activated.instance);
    }

我还建议不要使用未转义的$username = preg_replace("![ ]+!i", "-", $username); 字符 - 他们习惯在两个PHP字符串中都有含义(对于双引号更有用)和在RegEx中。

或者,\将匹配任何字词,\w将匹配任何数字,因此\d将匹配任何不是字母数字的内容。

![^\w\d]+!iu

注意,$username = preg_replace('![^\\w\\d]+!iu', '-', $username); 使其不区分大小写,i使其保持unicode安全。

示例:

u

输出echo preg_replace('![^\\w\\d\\\\]+!iu', '-', 'this is a testé');