我的网页包含如下超链接:
$name = "Hello World";
echo "<a href='page.php?name='". preg_replace(" ", "_", $name) "'> bla bla </a>"
这会成功生成以下链接:
...page.php?name=Hello_World
在我的page.php中我试图扭转操作:
if($_SERVER[REQUEST_METHOD] == "GET"){
$name = $_GET['name'];
//testing if the problem is with GET
echo $name;
//now here's the problem:
$string = preg_replace("_", " ", $name);
echo $string;
}
$ name正确回显,但$ string始终为null 我已经尝试了所有可能的组合,如〜〜和/ /和[_]以及\ s,并直接使用$ _GET:
preg_replace("_", " ", $_GET['name']);
他们都没有奏效。 这个问题在我的大部分时间都在燃烧。 任何帮助表示赞赏。
答案 0 :(得分:1)
preg_replace
接受正则表达式作为它的第一个参数。 " "
和"_"
都不是有效的正则表达式。
在这种情况下,您可以使用str_replace
。
答案 1 :(得分:1)
@Halcyon指出preg_replace
语法不正确,以下是正确的:
$string = preg_replace('/_/', ' ', $name);
但是对于这样一个简单的查找/替换,您可以使用str_replace代替:
$string = str_replace("_", " ", $name);
echo $string;
答案 2 :(得分:-2)
你可以创建像sefurl这样的函数
function makesefurl($url=''){
$s=trim($url);
$tr = array('ş','Ş','ı','I','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç','(',')','/',':',',');
$eng = array('s','s','i','i','i','g','g','u','u','o','o','c','c','','','-','-','');
$s = str_replace($tr,$eng,$s);
$s = preg_replace('/&amp;amp;amp;amp;amp;amp;amp;amp;.+?;/', '', $s);
$s = preg_replace('/\s+/', '-', $s);
$s = preg_replace('|-+|', '-', $s);
$s = preg_replace('/#/', '', $s);
$s = str_replace('.', '.', $s);
$s = trim($s, '-');
$s = htmlspecialchars(strip_tags(urldecode(addslashes(stripslashes(stripslashes(trim(htmlspecialchars_decode($s))))))));
}
echo "<a href='page.php?name='". makesefurl($name) "'> bla bla </a>";
并且你可以将它转换为makesefurl函数之前所有你需要创建另一个functin,如解码器或编码器html命令