php-小文字とハイフンに変換した後、レコードが収集されない
URLのすべての値を小文字とハイフンに変換しようとしています。ただし、小文字とハイフンに変換すると、レコードは収集されません。それ以外の場合は、%20で正常に収集されます。コーディングが正しいかどうか、または他に何かする必要があるかどうかを確認するために、フィードバックをお願いします。 PHPと配列を確認しましたが、問題ないようです。
example.com/user/kate/baked/cake
>説明ページに移動します
example.com/user/kate/baked/Lovely%20Chocolate%20Cake
>説明ページに移動します
以下のコード
HTaccess
リンク変更php
**ケーキphp**
`
これまでのところ、私が物事を理解するのを手伝ってくれた十字軍に感謝します。 example.com/user/kate/baked/lovely-chocolate-cake >これは説明ページに移動しません(これは、コードを使用して小文字とハイフンに変換する場合です)
RewriteRule ^user/.*[A-Z\ ] linkchange.php?l=%{REQUEST_URI} [L]
RewriteRule ^user/([a-z]+)/baked/([a-z.*0-9_-]+)$ cakes.php?id=$1&baked=$2
<?
$link = $_GET['l'];
$newlink = strtr($link," ABCDEFGHIJKLMNOPQRSTUVWXYZ","-abcdefghijklmnopqrstuvwxyz");
header("Location: http://www.example.com". $newlink,TRUE,301); exit;
?>
<?php
$cakesmade = array();
$cakesmade = array(
"kate" => array(
"cake" => array(
"cakeingredients" => "egg, flour"),
"Lovely Chocolate Cake" => array(
"cakeingredients" => "chocolate, eggs, flour"),
"amazing cake" => array(
"cakeingredients" => "lemons, flour")
),
);
?>
<?php foreach($cakesmade as $id => $donecake)
foreach($donecake as $bakedcake => $description)
{ echo "<a href='user/$id/baked/{$bakedcake}'>{$bakedcake}</a><br>";
}
?>
// this part should appear once the user and variable are set in the url
The selected cake is: <?php if(isset($bakedcake)) { echo $bakedcake; } else { echo "not set"; } ?> by <?php if(isset($id)) { echo $id; } else { echo "not set"; } ?>`
答え :
解決策:
次のようなリンクがあるとしましょう:
$str = example.com/user/kate/baked/Lovely%20Chocolate%20Cake
// we'll need to decode the URL like so :
$url = urldecode($str);
// then, replace lowercase and replace all spaces with dashes
$url = strtolower($url);
$url = str_replace(' ', '-', $url);
それでうまくいくと思います。
答え :
解決策:
まず、書き換えルールから最初の「/」を削除します。次に、最初のルールを変更して、PHPの作業を少し簡単にします。
RewriteRule ^ user /([^/]+)/baked/(.*[A-Z\].*)$ linkchange.php?user = $ 1&cake = $ 2} [L]RewriteRule ^ user /([a-z] +)/ baked /([a-z。* 0-9 _-] +)$cakes.php?id=$1&baked=$2リンク変更コードは次のようになります:
<?php $user = $_GET['user']; $cake = $_GET['cake']; $cake = urldecode($cake); $cake = strtr($cake," ABCDEFGHIJKLMNOPQRSTUVWXYZ","-abcdefghijklmnopqrstuvwxyz"); header("Location: http://www.example.com/user/$user/baked/$cake", TRUE, 301); exit; ?>
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。