小编Iva*_*jak的帖子

将任何可转换的utf8字符音译为ascii等效字符

有没有什么好的解决方案以良好的方式进行这种音译?

我尝试过使用iconv(),但是非常烦人,而且它的行为并不像人们预期的那样.

  • 使用//TRANSLIT将尝试替换它可能的东西,将所有不可转换的东西留作"?"
  • 使用//IGNORE不会留下"?" 在文本中,但也不会音译,并且E_NOTICE当找到不可转换的字符时也会引发,所以你必须使用带有@ error suppressor的iconv
  • 使用//IGNORE//TRANSLIT(正如一些人在PHP论坛中建议的)实际上是相同的//IGNORE(在php版本5.3.2和5.3.13上自己尝试过)
  • 也使用//TRANSLIT//IGNORE与...相同//TRANSLIT

它还使用当前区域设置进行音译.

警告 - 许多文本和代码如下!

这里有些例子:

$text = 'Regular ascii text + ??žš? + äöüß + é???ë? + æø€ + $ + ¶ + @';
echo '<br />original: ' . $text;
echo '<br />regular: ' . iconv("UTF-8", "ASCII//TRANSLIT", $text);
//> regular: Regular ascii text + ????? + ???ss + ?????? + ae?EUR + $ + ? + …
Run Code Online (Sandbox Code Playgroud)

php ascii utf-8 transliteration iconv

20
推荐指数
2
解决办法
2万
查看次数

Angular 5/6:保护路线(路线防护)而不重定向到错误路线

我有一点泡菜.我正在使用Route guard(实现CanActivate接口)来检查用户是否被授予访问特定路由的权限:

const routes: Routes = [
    {
        path: '',
        component: DashboardViewComponent
    },
    {
        path: 'login',
        component: LoginViewComponent
    },
    {
        path: 'protected/foo',
        component: FooViewComponent,
        data: {allowAccessTo: ['Administrator']},
        canActivate: [RouteGuard]
    },
    {
        path: '**',
        component: ErrorNotFoundViewComponent
    }
];
Run Code Online (Sandbox Code Playgroud)

现在它可以很好地保护'/ protected/foo'路由不被激活,但我想告诉用户他试图访问的路由是禁止的(类似于你可能从服务器获得的403 Forbidden).

问题: 如何向用户显示此特殊错误视图,而不将其重定向到错误路径哪个接缝是我找到的众多来源的首选选项? 而且如何在RouteGuard没有实际加载禁止路线的情况下仍然使用我,因为如果我检查我的内部访问FooViewComponent并显示不同的视图它首先会失败点RouteGuard.

理想情况下,我想让我RouteGuard不仅在canActivate()方法中返回false ,而且还完全用say替换组件ErrorForbiddenViewComponent.但我不知道该怎么做,或者事件是否可能.任何替代品?

这就是我的护卫队现在的样子:

import {Injectable} from '@angular/core';
import {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
import {AuthService} from '../services/auth.service';

@Injectable()
export …
Run Code Online (Sandbox Code Playgroud)

angular-routing angular-router-guards angular5 angular6

11
推荐指数
2
解决办法
4821
查看次数