0

私はここで新しく、あなたの助けが必要です。.htaccessとphpで遊び始めましたが、問題が発生しました。URL書き換えを行うときは、データベースから抽出した記事のタイトルである文字列をURLに渡します。問題は、文字列(タイトル)に多くの文字が含まれていて、URLのスペルが間違っていることです。例:localhost / news / php%5%is%outここで、%は空白です。すべてのタイトルをpreg_replaceでフォーマットしようとし、すべてのスペースを「-」で置き換えましたが、文字がたくさんあるので、preg_replaceなしでこれを行う方法があるかどうかを知りたいので、任意の文字列がクエリに適しています。news.phpでは、URLから文字列を取得し、それをデータベースのクエリに使用して、記事全体の本文を抽出します。

RewriteRule ^news/([a-zA-Z0-9._]+)/?$ /news.php?news_title=$1

これは私の.htaccessファイルなので、news.phpで$_GETを介して'news_title'変数を取得し、データベースにクエリを実行して、このタイトルのアーティコールを見つけます。だから私の質問は、私はこれをすべて間違っているのですか?これを行う他の方法はありますか?私はたった2日前にhtaccessを使い始めましたが、URLをもっとわかりやすくしたいと思っています。私の質問が明確であることを願っています。私を助けてくれるみんなに感謝します。

ほんの一例として、これは、URLの記号(; amp、%、?など)で変更されない文字列の通常のタイルを変換するために使用するものです。

function generateUrl($url) {

    $v1 = preg_replace("/[\s\:\;\,\_\'\`\"\?\!\%\(\)\+\=\#\@\[\]\{\}\/]/", "-", $url );
    $v2= preg_replace('/[-]{2,}/', '-', $v1);
    $v3 = preg_replace('/^[-]/', '', $v2);
    $final = preg_replace('/[-]$/', '', $v3);

    return $final;
}
4

1 に答える 1

1

あなたの問題の答えはここにあると思いますPHPのURLフレンドリーなユーザー名?。テーブルに記事を追加するときは、この関数(Slug)を使用して記事のタイトルを変換し、変換されたタイトルを「slug」列に格納します。ユーザーがアドレス(.....)/ article.php?name = some-titleを入力したら、$ slug = $ _GET ['title']を使用して、スラッグで記事を検索します。記事を保存する前に、このスラッグのある記事が存在するかどうかを確認する必要があります。存在する場合は、スラッグにいくつかの番号を追加してから、dbに保存します。テーブルに同じスラッグを持つ2つのレコードが存在することを許可することはできません。

于 2012-08-10T14:48:52.833 に答える