什么是完整的正则表达式或其他一些可以获得标题的过程:
如何将标题更改为Stack Overflow等URL的一部分?
把它变成
how-do-you-change-a-title-to-be-part-of-the-url-like-stack-overflow
Run Code Online (Sandbox Code Playgroud)
Stack Overflow上的SEO友好URL中使用了哪些?
我使用的开发环境是Ruby on Rails,但是如果还有其他一些特定于平台的解决方案(.NET,PHP,Django),我也很乐意看到它们.
我相信我(或其他读者)会在不同的平台上遇到同样的问题.
我正在使用自定义路由,我主要想知道如何更改字符串以删除所有特殊字符,它全部小写,并且所有空格都被替换.
如何将西里尔字母音译为拉丁字母?
E.g. ??????? ???????? -> Glavnaja stranica
Run Code Online (Sandbox Code Playgroud)
这个Transliteration PHP扩展可以做得很好,但我不能在我的服务器上安装它.
最好是在PHP中使用相同的实现.
来自维基百科:
甲蛞蝓是识别使用人类可读关键字的页面的URL的一部分.
为了使用户更容易键入URL,通常也会删除或替换特殊字符.例如,重音字符通常被英文字母中的字母取代; 标点符号通常被删除; 和空格(必须编码为%20或+)由短划线( - )或下划线(_)代替,这些更美观.
我开发了一个照片共享网站,用户可以在其上传,分享和查看照片.
所有页面都是自动生成的,没有我对标题的控制.因为照片的标题或用户的名称可能包含重音字符或空格,我需要一个功能来自动创建slugs并保持可读的URL.
我创建了以下函数来替换重音字符(èçëçî),删除标点符号和错误字符(#@&〜^!)并以破折号转换空格.
php:
function sluggable($str) {
$before = array(
'àáâãäåòóôõöøèéêëðçìíîïùúûüñšž',
'/[^a-z0-9\s]/',
array('/\s/', '/--+/', '/---+/')
);
$after = array(
'aaaaaaooooooeeeeeciiiiuuuunsz',
'',
'-'
);
$str = strtolower($str);
$str = strtr($str, $before[0], $after[0]);
$str = preg_replace($before[1], $after[1], $str);
$str = trim($str);
$str = preg_replace($before[2], $after[2], $str);
return $str;
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
PHP中的URL友好用户名?
我在某种程度上混淆了使用适当的函数来逃避和创建一个slu ..
我用过这个:
$slug_title = mysql_real_escape_string()($mtitle);
Run Code Online (Sandbox Code Playgroud)
但有人告诉我不要使用它并使用urlencode()
哪一个更适合slu and和安全
正如我在SO中看到的,它插入 - 在单词之间:
https://stackoverflow.com/questions/941270/validating-a-slug-in-django
Run Code Online (Sandbox Code Playgroud) 将一串文本转换为slug的最佳方法是什么?含义:
我在网上找到了很多代码,但它们都倾向于将空格转换为破折号,我不想这样做.
我也可以选择改变转换,其中:
还有一个变体,其中:
我想知道是否有一个简单的函数/代码可以处理从给定的字符串创建一个 slug。
我正在开发一个多语言网站(英语、西班牙语和阿拉伯语),但我不确定如何专门针对西班牙语和阿拉伯语进行处理。
我目前正在使用来自 CSS-Tricks 的以下代码,但它不适用于 UTF-8 文本。
<?php
function create_slug($string){
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
return $slug;
}
echo create_slug('does this thing work or not');
//returns 'does-this-thing-work-or-not'
?>
Run Code Online (Sandbox Code Playgroud) 我用破折号为我的故事网址制作了一个slug,例如:
这是我创建slug的代码:
function Slugit($title) {
$title = strip_tags($title);
// Preserve escaped octets.
$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
// Remove percent signs that are not part of an octet.
$title = str_replace('%', '', $title);
// Restore octets.
$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);
$title = remove_accents($title);
if (seems_utf8($title)) {
if (function_exists('mb_strtolower')) {
$title = mb_strtolower($title, 'UTF-8');
}
$title = utf8_uri_encode($title, 500);
}
$title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = str_replace('.', '-', $title);
$title = preg_replace('/[^%a-z0-9 …Run Code Online (Sandbox Code Playgroud) Transliterator::listIDs() 将列出 ID,但显然它不是一个完整的列表。
Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();
Run Code Online (Sandbox Code Playgroud)
这有点奇怪,因为 ID 应该是唯一的。这看起来更像是一条规则,但如果我将它传递给createFromRules方法,它就不起作用:)
无论如何,我正在尝试从字符串中删除任何标点符号,但破折号 ( -) 或特定列表中的字符除外。
你知道这可能吗?或者是否有一些文档可以更好地解释音译器的语法?
我有一个自定义类别属性,我想添加到body类.据我所知,人们做的是什么
覆盖CategoryController并添加类似$root->addBodyClass($category->getMyAttribute());但我不想覆盖核心类...
在管理面板中,他们添加类似于<reference name=”root”><action method=”addBodyClass”><className>caravan-motorhome-lighting</className></action></reference>每个类别的内容,而不是使用属性本身,而是直接添加类.由于我已经有了一个属性,我当然不希望克隆它并以这种方式添加类.
所以我最喜欢的解决方案是我可以添加到local.xml的布局更新
<reference name=”root”>
<action method=”addBodyClass”>
<className>
get value of my custom attribute here dynamically
</className>
</action>
</reference>
Run Code Online (Sandbox Code Playgroud)
有没有人知道这是如何工作的或我甚至没有想到的另一个想法?
我的标题包括空格,[{}&()大写字母和其他几个我想要替换为低级字符的未知字符.我正在使用这个,但由于我不能预测用户将给出什么输入我正在考虑某种正则表达式或preg替换或preg匹配,以便只有较低的字母与下划线(空格)是可接受的或标题转换为所有小写下划线.i不想要任何其他字符,如{[]}()等.
我试过这个,但更喜欢一行preg替换或正则表达式
$name = str_replace(' ', '_', $cityu);
$name1 = str_replace('(', '_', $name);
$name2 = str_replace(')', '_', $name1);
Run Code Online (Sandbox Code Playgroud) 我想在用户提交的帖子标题的基础上在URL中使用连字符分隔的字符串.假设用户输入帖子的标题如下
$title = "USA is going to deport indians -- Breaking News / News India";
Run Code Online (Sandbox Code Playgroud)
我想将其转换如下
$url = "usa-is-going-to-deport-indians-breaking-news-news-india";
Run Code Online (Sandbox Code Playgroud)
可能还有一些我想要转换的角色.例如'&'到'和'和'#','%',到连字符( - ).其中一种方法是使用php替换功能.但是使用这种方法,我必须多次调用replace函数.这很费时间.还有一个问题是标题字符串中可能有多个连字符( - ),我想将多个连字符( - )转换为一个连字符( - ).
有没有强大而有效的方法来解决这个问题?
php ×9
slug ×5
friendly-url ×2
regex ×2
seo ×2
string ×2
arabic ×1
intl ×1
magento ×1
magento-1.7 ×1
preg-match ×1
preg-replace ×1
replace ×1
unicode ×1
url ×1
utf-8 ×1