Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将href=value的一部分从javascript变量similer替换为phps str_replace(..)?_Javascript - Fatal编程技术网

如何将href=value的一部分从javascript变量similer替换为phps str_replace(..)?

如何将href=value的一部分从javascript变量similer替换为phps str_replace(..)?,javascript,Javascript,我得到了包含以下数据的javascript变量(code2): <div class="pages"><center><a class="selected" href="/Episodes-1234_power1" title="power album page 1" >1</a><a class="normal" href="/Episodes-1234_power2" title="power album page 2"> 2<

我得到了包含以下数据的javascript变量(code2):

<div class="pages"><center><a class="selected" href="/Episodes-1234_power1" title="power album page 1" >1</a><a class="normal" href="/Episodes-1234_power2" title="power album page 2"> 2</a>
我试图用javascript做同样的事情,但我下面的代码不起作用!你们能帮我修一下吗?谢谢

<script>
.....
.....
alert ('' + code2);

 //document.write(code2);
var myString = code2;
var myString2 = myString.replace(href=, 'href="./doit.php?title=<?php echo $_GET['title'];?>&Num=');

document.write (myString2);
</script>

.....
.....
警报(“”+代码2);
//文件编写(代码2);
var myString=code2;
var myString2=myString.replace(href=,'href=“./doit.php?title=&Num=”);
document.write(myString2);

我喜欢将这样的字符串制作成实际的dom元素,然后使用方法从中进行操作:

var div = ​docu​ment.createElement('div');
div.innerHTML = code2

var a = div.querySelectorAll('a')[0];
a.href = "./doit.php?title=<?php echo $_GET['title'];?>&Num=";

document.body.appendChild(div)
var div=​文件​createElement('div');
div.innerHTML=code2
var a=div.querySelectorAll('a')[0];
a、 href=“./doit.php?title=&Num=”;
document.body.appendChild(div)

您可以使用javascript
replace
方法,基本上就像PHP方法一样,并利用其对正则表达式的支持来匹配一般意义上的href值。基本上如下所示:

var theSecondString = theFirstString.replace(/href=".+"/, theReplacementString);
使用
/href=“.+”/
意味着它将查找href“key”以及双引号中的任何内容,然后用替换字符串替换所有内容

这里有一个例子可以说明这一点


编辑:正则表达式应改为
/href=“/g
,以包括原始href组件;同样的原则也适用于一般意义,当然,这里有一个

你的JS有一个语法错误:在
href=
周围缺少引号。或者您可能打算将其作为正则表达式,在这种情况下,它应该是
/href=/
(另外,您的替换字符串可能在结束
之前有一个结束
)感谢大家的回复。kieran我运行您的脚本,它只会替换第二个href。单击后它甚至不会显示da first href!此外,我如何在运行时进行替换而不进行任何单击?仅当页面加载时?注:我们假设这两个页面URL从未发布,因此我们希望先替换,然后再输出对用户来说!我怎么能这样做呢?嘿,要替换所有的正则表达式,你需要在正则表达式中添加'g'标志,这会强制它匹配所有的,而不仅仅是它找到的第一个(如果你愿意,请阅读更多)。您只需将替换逻辑移到主脚本中,或使用“onload”事件调用函数,而不用按按钮,我只是将其放在其中,以便很容易看到差异。下面是感谢kieran,但为什么它从href中删除了/scents-1234\u power1和/scents-1234\u power2?有没有办法保留这些部分?既然这些都是进入下一页所必需的?不用担心,很高兴我们最终到达了那里。
var div = ​docu​ment.createElement('div');
div.innerHTML = code2

var a = div.querySelectorAll('a')[0];
a.href = "./doit.php?title=<?php echo $_GET['title'];?>&Num=";

document.body.appendChild(div)
var theSecondString = theFirstString.replace(/href=".+"/, theReplacementString);