相关疑难解决方法(0)

Stack Overflow如何生成其SEO友好的URL?

什么是完整的正则表达式或其他一些可以获得标题的过程:

如何将标题更改为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),我也很乐意看到它们.

我相信我(或其他读者)会在不同的平台上遇到同样的问题.

我正在使用自定义路由,我主要想知道如何更改字符串以删除所有特殊字符,它全部小写,并且所有空格都被替换.

regex language-agnostic seo friendly-url slug

245
推荐指数
7
解决办法
4万
查看次数

PHP中的西里尔语音译

如何将西里尔字母音译为拉丁字母?

E.g. ??????? ???????? -> Glavnaja stranica
Run Code Online (Sandbox Code Playgroud)

这个Transliteration PHP扩展可以做得很好,但我不能在我的服务器上安装它.

最好是在PHP中使用相同的实现.

php unicode transliteration

27
推荐指数
6
解决办法
4万
查看次数

生成SEO友好URL(slugs)

定义

来自维基百科:

蛞蝓是识别使用人类可读关键字的页面的URL的一部分.

为了使用户更容易键入URL,通常也会删除或替换特殊字符.例如,重音字符通常被英文字母中的字母取代; 标点符号通常被删除; 和空格(必须编码为%20或+)由短划线( - )或下划线(_)代替,这些更美观.

上下文

我开发了一个照片共享网站,用户可以在其上传,分享和查看照片.

所有页面都是自动生成的,没有我对标题的控制.因为照片的标题或用户的名称可能包含重音字符或空格,我需要一个功能来自动创建slugs并保持可读的URL.

我创建了以下函数来替换重音字符(èçëçî),删除标点符号和错误字符(#@&〜^!)并以破折号转换空格.

问题

  • 你觉得这个功能怎么样?
  • 你知道创建slu的任何其他功能吗?

:

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 string seo friendly-url slug

17
推荐指数
5
解决办法
5万
查看次数

最好的方法来逃脱并创造一个slu ..

可能重复:
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)

php slug

6
推荐指数
1
解决办法
4451
查看次数

PHP将字符串转换为slug

将一串文本转换为slug的最佳方法是什么?含义:

  • 允许alpha,转换为小写
  • 数字是允许的
  • 空格应该被删除,不能转换成破折号(" - ")
  • 重音字符替换为等效标准alpha
  • 没有其他字符允许,应该被删除

我在网上找到了很多代码,但它们都倾向于将空格转换为破折号,我不想这样做.

我也可以选择改变转换,其中:

  • &符号("&")应替换为字符串"和"

还有一个变体,其中:

  • 不要费心将重音字符转换为等效的标准alpha

php string

6
推荐指数
1
解决办法
1万
查看次数

适用于所有语言的 PHP 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)

php utf-8 arabic slug

5
推荐指数
2
解决办法
5081
查看次数

使用短划线显示URL slug时出现问题

我用破折号为我的故事网址制作了一个slug,例如:

使用slug而不是ID获取记录

这是我创建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)

php url slug

4
推荐指数
1
解决办法
1849
查看次数

在哪里可以找到 PHP 音译器 (Intl) 的 ID 或规则列表?

Transliterator::listIDs() 将列出 ID,但显然它不是一个完整的列表。

此页面示例中,ID 如下所示:

Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();
Run Code Online (Sandbox Code Playgroud)

这有点奇怪,因为 ID 应该是唯一的。这看起来更像是一条规则,但如果我将它传递给createFromRules方法,它就不起作用:)

无论如何,我正在尝试从字符串中删除任何标点符号,但破折号 ( -) 或特定列表中的字符除外。

你知道这可能吗?或者是否有一些文档可以更好地解释音译器的语法?

php transliteration intl

3
推荐指数
1
解决办法
2870
查看次数

Magento:在body类中显示自定义属性

我有一个自定义类别属性,我想添加到body类.据我所知,人们做的是什么

  1. 覆盖CategoryController并添加类似$root->addBodyClass($category->getMyAttribute());但我不想覆盖核心类...

  2. 在管理面板中,他们添加类似于<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)

有没有人知道这是如何工作的或我甚至没有想到的另一个想法?

magento magento-1.7

2
推荐指数
1
解决办法
2657
查看次数

将所有内容替换为低位字母

我的标题包括空格,[{}&()大写字母和其他几个我想要替换为低级字符的未知字符.我正在使用这个,但由于我不能预测用户将给出什么输入我正在考虑某种正则表达式或preg替换或preg匹配,以便只有较低的字母与下划线(空格)是可接受的或标题转换为所有小写下划线.i不想要任何其他字符,如{[]}()等.

我试过这个,但更喜欢一行preg替换或正则表达式

     $name = str_replace(' ', '_', $cityu);
     $name1 = str_replace('(', '_', $name);
     $name2 = str_replace(')', '_', $name1);
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace preg-match

0
推荐指数
1
解决办法
143
查看次数

如何在PHP中构建连字符分隔的字符串

我想在用户提交的帖子标题的基础上在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 replace

0
推荐指数
1
解决办法
2957
查看次数