所以基本上我有一个php变量,我想在网址中添加。问题是,如果变量中包含奇怪的字符,则url将无效。
我的例子:
URL: http://localhost/myapp/products/$variable
变量看起来像这样:
$variable = 'books'; //books
$variable = 'art and design'; //art_and_design
$variable = '< 220g de CO2/Kg'; //_220g_de_CO2
$variable = '< 220g /de CO2/Kg'; //_220g_
http://localhost/myapp/products/books
http://localhost/myapp/products/art_and_design
http://localhost/myapp/products/_220g_de_CO2
http://localhost/myapp/products/_220g_
我想将变量看起来像注释中的值,这意味着空格应该被_替换,同时删除与url(&lt;或/)冲突的部分。
正如你所看到的,我已经删除了第一个字符和最后一个字符,并且只保留了很好的部分,因为我在数据库中使用它进行搜索(LIKE opperator)并且它不会工作如果我仅删除/
并同时保留Kg
。
我需要一个函数来为我做这个,目前它看起来像这样:
function stripVar($variable){
return str_replace(' ', '_', $variable);
}
但我不知道如何处理另一部分。感谢。
答案 0 :(得分:1)
这样可以吗?
$arr = array('books', 'art and design', '< 220g de CO2/Kg', '< 220g/ de CO2/Kg');
foreach($arr as $variable) {
echo "$variable -> ";
$variable = preg_replace('/\s+/', '_', $variable);
$variable = preg_replace('~(?:^[^</]*[</]+|[</]+.*$)~', '', $variable);
echo $variable,"\n";
}
<强>输出:强>
books -> books
art and design -> art_and_design
< 220g de CO2/Kg -> _220g_de_CO2
< 220g/ de CO2/Kg -> _220g
答案 1 :(得分:-1)
您可以使用url_encode()
:http://php.net/manual/en/function.urlencode.php
然后url_decode()
得到真正的变量。然后你可以使用它。
答案 2 :(得分:-1)
除了url_encode()之外,您还可以使用以下功能,它具有更多&#34;漂亮的&#34;输出:
function prettyURL($variable)
{
return preg_replace('/^-+|-+$/', '', strtolower(preg_replace('/[^a-zA-Z0-9]+/', '_', $variable)));
}
对于您的变量,它产生以下输出:
Variable 1: books
Variable 2: art_and_design
Variable 3: _220g_de_co2_kg
更新,删除了strtolower:
function prettyURL($variable)
{
return preg_replace('/^-+|-+$/', '', preg_replace('/[^a-zA-Z0-9]+/', '_', $variable));
}
输出:
Variable 1: books
Variable 2: art_and_design
Variable 3: _220g_de_CO2_Kg
答案 3 :(得分:-2)
您可以使用数组删除所需内容(第一个参数):
$whatRemove = array(' ', '<', 'Kg'); // add more if you need.
str_replace($whatRemove,'', $variable);