我想用破折号替换空格,但代码也用破折号替换重音字符:
$username = preg_replace("![^a-Z0-9]+!i", "-", $username);
如何将带有重音符号的字母留下不用短划线代替?
答案 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é');