如何在PHP的字符串末尾添加后缀

时间:2010-03-18 16:42:45

标签: php

我试图在用户输入数据库之前在所有字符串的末尾添加.html后缀。到目前为止,这是我的代码:

strtolower(str_replace(" ", "_", $postTitle));

上面的内容是用户尝试发布的帖子的标题,将其转换为小写,用下划线替换所有空格,并准备将其输入名为post_url的数据库列。

我只需要它做一件事,那就是在每个帖子的末尾添加一个.html。这样做的功能是什么?

6 个答案:

答案 0 :(得分:5)

非常简单的回答:

$url_string = strtolower(str_replace(" ", "_", $postTitle)).'html';

但是,你需要考虑安全性并为网址转义坏字符。

你需要删除和非字母数字字符这样做才能解决两个问题

  1. 可能的SQL注入

  2. 无效网址

  3. 例如

    // remove all bad chars from string e.g. commas, single quotes etc
    $url_string = preg_replace(“/[^a-zA-Z0-9\s]/”, “”, $postTitle);
    // replace spaces with underscore and make all lowercase 
    $url_string = strtolower(str_replace(" ", "_", $url_string));
    // add .html to end of string.
    $url_string = $url_string.'html';
    

答案 1 :(得分:2)

也许我没有得到你的问题,但是这个:

strtolower(str_replace(" ", "_", $postTitle)).'.html';

答案 2 :(得分:1)

$postTitle = strtolower(str_replace(" ", "_", $postTitle));    
$postTitle .= '.html';

.=是PhP中的Concatenation和assignment运算符。它会将字符串'.html'添加到$ postTitle的末尾,然后将$ postTitle的值设置为等于它。如果你只想将两个字符串连接在一起,那么就可以这样做:

$string3 = $string1.$string2;

答案 3 :(得分:1)

$newName = strtolower(str_replace(" ", "_", $postTitle)) . '.html';

你提到“白色空间”,虽然你实际上只是捕捉空间,而不是所有类型的空白区域。根据您对特定问题所说的内容,这可能已经足够了,但请确保您考虑选项卡(“\ t”)和/或换行符&也可能存在换行符(“\ n”,“\ r”)。

答案 4 :(得分:1)

对子级:

strtolower(str_replace(" ", "_", $postTitle)).".html";

诀窍?

答案 5 :(得分:1)

在我看来,这是一个更顺畅的解决方案:

function handle_create($string) {
  $healthy = array(' ', 'å', 'ä', 'ö');
  $yummy = array('-', 'a', 'a', 'o');
  $string = str_replace( $healthy, $yummy, mb_strtolower( $string, 'UTF-8' ) );
  $string = preg_replace('/-{1,}/', '-', $string );
  return preg_replace('/[^a-z0-9\-\/]/i', '', $string) ;
}

$title = 'Lörem ipsum dålor sit amet - consectetur adipiscing elit.';
echo handle_create( $title );

会导致

  

LOREM-ipsum的-dalor-仰卧阿梅特-consectetur-adipiscing-ELIT