删除特殊字符,并在CakePHP子弹中将带有重音符号的元音转换为没有重音符号的元音

时间:2018-11-05 15:33:15

标签: php cakephp special-characters slug cakephp-1.2

对于我的two,我需要进行两项改进:

  
      
  1. 删除特殊字符。

  2.   
  3. 将带有重音符号的元音转换为没有重音符号的元音。

  4.   

问题是我的网站正在生成带有以下标记的URL:

https://example.net/Toronto/product/férula-dental-limpieza-con-ul

https://cuponclub.net/Toronto/product/lifting-de-pestañas

URL中的那些特殊字符(例如“é”和“ñ”)对我来说往往是有问题的,原因有很多,例如将URL集成到我使用的API或共享链接时……

我正在使用CakePHP 1.2。这就是我在代码中实现代码的方式:

class Product extends AppModel{
    ..........
    ..........
    ..........
    var $actsAs = array(
        'Sluggable' => array(
            'label' => array(
                'short_name'
            ),
            'length' => 30,
            'overwrite' => false
        )
    );
    ..........
    ..........
    ..........
}

在数据库中,'short_name'是用于生成条块的字段。没有CakePHP,PHP已经提供了内置功能,例如str_replace()preg_replace(),并且通过使用这些功能和常规表达式(例如[^A-Za-z0-9\-]),我可以在替换所有空格后删除所有特殊字符带连字符。但是由于我使用的是CakePHP,因此需要使用其语法。我正在阅读https://github.com/msadouni/cakephp-sluggable-plugin,发现了有关label的以下信息:

  

label :(数组|字符串,可选)设置为包含以下内容的字段名称   从何处生成段子的字符串,或一组要生成的字段名称   连接生成子弹。默认值:标题

我可以将label视为字符串,并对其应用str_replace()preg_replace()之类的功能吗?

1 个答案:

答案 0 :(得分:3)

鉴于您正在使用的插件在过去10年中没有任何更新,我可以肯定地说,自行维护是您的最佳选择-如果您不想{{3} },也就是说,这都不难做到

因此,只需对其进行分叉并进行必要的更改或创建自定义行为即可。我还建议看看最新的CakePHP如何处理此问题,请参阅create a behavior from scratch的源代码。如果您的PHP安装支持它,那么您可能需要向后移植,即利用INTL扩展名提供的\Cake\Utility\Text::slug()