你好,伙计们,我和我的一个网站有问题。今天我决定把我所有的网址都换成更像样的东西。我现在面临的问题是如何摆脱这些空间。下面是链接现在"http://website.com/repair/iphone%205s“的外观
这是我的.htaccess
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^([a-z]+)\/?$ $1.php [NC,L]
RewriteRule ^smartphone/([a-z]+)/?$ devices.php?d=$1 [L]
RewriteRule ^tablet/([a-z]+)/?$ tablet.php?d=$1 [L]
RewriteRule ^repair/([0-9a-zA-Z_\s]+)/?$ repair.php?m=$1 [L]
RewriteRule ^repair/tablet/([0-9a-zA-Z_\s]+)/?$ repairtablet.php?m=$1 [L]
RewriteRule ^repair/ipod/([0-9a-zA-Z_\s]+)/?$ repairipod.php?m=$1 [L]
</IfModule>url是使用我在数据库中拥有的每部手机的模型名构建的,它们包含空格,例如,iPhone 5s将具有“修复/iphone%205 s”的url,这里是我的php代码,在这里我使用一个_GET语句返回该特定模型的所有修复。
<?php
$model = mysqli_escape_string($con, $_GET['m']);
$modelName = mysqli_query($con,"SELECT
d.id AS 'DeviceID',
d.model AS 'Model',
r.id AS 'RepairID',
r.repair AS 'Repair',
r.price AS 'Price',
r.desc AS 'Desc',
r.active AS 'Active',
r.img AS 'IMG'
FROM `tablets` AS d
LEFT JOIN `tabletrepair` AS r ON
(d.`id` = r.`pid`)
WHERE d.`model` = '$model'
AND r.`active` = 1
");
while($row = mysqli_fetch_array($modelName))
{
echo $row[Model];
echo $row[Desc];
echo $row[Price];
echo $row[IMG];
}
?>我想把"http://website.com/repair/iphone%205s“改为"5s”
谢谢您的帮助,我们会很高兴的。
发布于 2014-06-17 21:53:48
当您基于$_GET'm‘值创建WHERE子句时,您可以使用str_replace替换所有空格,另外(我不确定是否有必要)您应该解码url ( $_GET'm’contains %20而不是‘')。也不记得mysql转义或切换到PDO,或其他高级数据库操作库。
$model = str_replace(" ","_",rawurldecode($_GET['m']));参考文献
https://stackoverflow.com/questions/24273796
复制相似问题