Str_replace正在正确地替换除1节外的所有字符串


str_replace is replacing all but 1 section of my string correctly.

原来的字符串是这样的

value= " tabindex='500'

我想用这个

替换字符串

value = '电子邮件:tabindex = 500年的onclick = '"如果(this.value = = '电子邮件:'){this.value = ";}

所以我使用str_replace函数
$userForm = str_replace("value='' tabindex='500'", "value='Email:' tabindex='500' onclick='"if (this.value=='Email:') {this.value='';}'"",$userForm);  

我的输出结果是这个

value="" tabindex="500" onfocus=" if (this.value == '') { this.value = ''; }"   

如果你注意到,除了包含'value="Email:"的部分外,所有内容都被正确替换了…

我希望有人能知道为什么会发生这种情况?任何帮助都将非常感激。提前感谢!

您可能正在寻找如下内容:

$userForm = preg_replace('/value='''' tabindex=''(.*?)''/i', 'value=''Email:'' tabindex=''$1'' onclick="if (this.value==''Email:'') {this.value='''';}', $userForm);

结果:

value='Email:' tabindex='500' onclick="if (this.value=='Email:') {this.value='';} 

preg_replace

可以使用以下代码:

$val = "value='' tabindex='500'";
$result = str_replace( "value='' tabindex='500'", "value='Email:' tabindex='500' onclick=" . ''"if' . " (this.value=='Email:') {this.value='';}", $val );
echo $result;

这里缺少一些东西,直接复制您的代码:

<?php
$userForm = "value='' tabindex='500'";
var_dump($userForm);
echo '<br><br>';
$userForm = str_replace("value='' tabindex='500'", "value='Email:' tabindex='500' onclick='"if (this.value=='Email:') {this.value='';}'"",$userForm);
var_dump($userForm);

我最终得到以下结果:

value='Email:' tabindex='500' onclick="if (this.value=='Email:') {this.value='';}"

,这似乎是你正在寻找的结果。您是否在其他地方更改了变量?