我将首先向您提供我正在处理的代码,以便您可以按照我的意思(对不起法语,我意识到你们所有人都不会说法语但是我正在为这个网站制作一个法语学校).我已经删除了我认为不是问题的一部分(实际文件是757行!)
photos.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Photos</title>
<script type="text/javascript">
function removeCriterion(criterionText)
{
var getData = new RegExp("&" + criterionText + "|\\?" + criterionText + "$|" + criterionText + "&", "gi");
window.location = window.location.toString().replace(getData,"");
}
</script>
</head>
<body>
<a class="retirerCritere" onclick="removeCriterion('Shawn+Freyssonnet-Inder');" title="Réessayer la recherche sans ce critère"><img src="img/deleteButton.png" alt="Retirer" /></a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
虽然在剥离所有附加内容时看起来并不多,但这是根据一组标准显示照片的页面的一部分.这些标准是通过php变量$ _GET获取的,所以如果我想要显示属于我的所有照片(Shawn Freyssonnet-Inder)并且是在法国拍摄的,我使用以下链接:
<a href="photos.php?nom=Shawn+Freyssonnet-Inder&pays=France" ...>link</a>
Run Code Online (Sandbox Code Playgroud)
然后,该页面将获取所有照片,其中nom = Shawn Freyssonnet-Inder并在mysql数据库中支付 = France.此外,它向用户显示用于过滤结果的标准列表,允许他(她)隔离标准,删除标准等.
注意:空格被替换为带有php函数urlencode的加号(+).在显示页面上的txt之前,我使用urldecode删除加号,确保用户具有适当的人性化版本的字符串.现在当我调用removeCriterion函数时,我使用相同的urlencode d字符串作为参数,所以我相信javascript在查找url中的文本时应该没有问题.
尝试删除标准时出现问题.如您所见,我使用removeCriterion javascript函数删除条件,该函数只是在url中找到条件定义并将其删除(查找和替换).但由于某些原因,在某些标准上,它不起作用,例如"Shawn Freyssonnet-Inder"或其他带空格的字符串.
你们中的任何人都知道为什么javascript无法找到并替换url中包含空格的字符串吗?
在正则表达式中,加号(+)具有特殊含义 - 它表示重复前一项一次或多次.
您需要转义加号才能表示文字加字符:
criterionText = criterionText.replace(/\+/g, '\\+');
Run Code Online (Sandbox Code Playgroud)