0

私は正規表現についてこの奇妙な状況に遭遇しています。IDが設定されているかどうかを最初に確認し、設定されていない場合はにリダイレクトしますindex.php

これはINDEX.PHPです

$title = "This is a title";
$id = "5";
$queryc = $db->prepare("SELECT * FROM categories WHERE id = :id");
$queryc->bindParam(':id', $id, PDO::PARAM_INT); 
$queryc->execute();

/*** fetch the results ***/
$resultc = $queryc->fetchAll();
$count = count($resultc);
if ($count > 0) 
{
foreach($resultc as $rowc)

    {
    $cat_name = htmlentities($rowc['cat_name'], ENT_QUOTES, 'utf-8');
    $cat_name = stripslashes($cat_name);

    }
 }else {
 //redirect is a function 
 redirect("index.php");
 }
 echo "  
 <td width='57%' height='126' class='bord'  ><a href='$cat_name-$id.htm'  

 class='title_style'>" . $title . "</a><br>";

$cat_name2つの単語をスペースで区切るか、一部の文字を除いて文字にアクセントを付けることができます。そのために私は.htaccessを使用しました

  Options +FollowSymlinks
  RewriteEngine on
  RewriteRule ^([^!@#$%^&*(){}]+)-(\d+)\.htm$   file.php?id=$2 [L]

結果が示すfile.phpで、$idが設定されていることを確認したかった

if( isset($_GET['id']) )
{

$id = (int) $_GET['id'];

    if( $id == 0 )
    {
        redirect("index.php");
        exit;   
    }

}   
else
{
redirect("index.php");
    exit;
}

ブラウザでは、次のようになります 。mydomain.com/auto auction-5.htm

私の問題は:( $cat_name = auto auction;スペースに注意してください)それは機能しませんが、スペースがない場合$cat_name = autoauction;は機能します。

スペースがある場合、どうすればそれを機能させることができますか?

4

1 に答える 1