从字符串

时间:2017-01-14 11:58:54

标签: php regex codeigniter

我必须将帖子存储到数据库中。我想将帖子标题存储为post url,因此我需要删除特殊字符和空格。我做到了。一切都工作正常但是当我在字符串的最后给出空格时,它最后显示连字符如下。
例如abcd_
如果有空格,我只想删除最后一个连字符 我已经尝试了以下 -

function clean($post_name) {
               $post_name = str_replace(' ', '-', $post_name); 
               return preg_replace('/[^A-Za-z0-9\-]/', '', $post_name);
            }
            $post_url=clean($post_name);  

这怎么可能?
谢谢。

4 个答案:

答案 0 :(得分:1)

sqlite> create table "table" ( "id" char(36) default (lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))), "data" varchar(255), primary key ("id") ); sqlite> insert into "table" ("data") values ('foo'); sqlite> insert into "table" ("data") values ('bar'); sqlite> select * from "table"; 947efcc9-4212-442a-b68c-eb6fbd8a7128|foo a2c3857b-1eb4-40bd-aed2-6e8d68cc2ab8|bar

之前尝试trim()
str_replace()

答案 1 :(得分:1)

解决问题的方法是我的1%

function clean($post_name) {
    $post_name = trim($post_name);

答案 2 :(得分:1)

尝试这样。trim()函数从字符串的两边删除空格和其他预定义字符。

function clean($post_name) {
               $name = trim($post_name);
               $post_name = str_replace(' ', '-', $name); 
               return preg_replace('/[^A-Za-z0-9\-]/', '', $post_name);
            }
            $post_url=clean($post_name); 

了解更多http://php.net/manual/en/function.trim.php

答案 3 :(得分:0)

只需检查给定字符串的最后两个字符即可。然后分配子串,如果它是定义的。您将能够将更多“已定义的字符”放入if块中进行检查。

$len = strlen($post_name)

// check if last two characters are ' -'
if ( substr($post_name, $len -2, $len) === ' -' ) {

    // assign all but the last two characters.
    $post_name = substr($post_name, 0, $len -2);

}