Php 检查字符串中的单词是否与数组中的键匹配,然后替换它
我想在一个字符串中找到一个关键字,我试图让脚本找到它,然后替换它,但只替换那个关键字(当然,如果找到其他关键字,也替换它们)。但是我缺乏做这项工作的经验,我只是想练习一下。这是我的开始代码:Php 检查字符串中的单词是否与数组中的键匹配,然后替换它,php,Php,我想在一个字符串中找到一个关键字,我试图让脚本找到它,然后替换它,但只替换那个关键字(当然,如果找到其他关键字,也替换它们)。但是我缺乏做这项工作的经验,我只是想练习一下。这是我的开始代码: $var = array( '{test1}' => 'something1', '{test2}' => 'something2', '{test3}' => 'something3' ); $output = 'Please work it var {tes
$var = array(
'{test1}' => 'something1',
'{test2}' => 'something2',
'{test3}' => 'something3'
);
$output = 'Please work it var {test1}!';
foreach($var as $element)
{
if(strstr($output, $element) !== false)
{
echo 'not found<br>';
}
else
{
echo 'found<br>';
}
}
首先,你的if陈述是错误的。它没有找到它3次,这就是为什么它会重复(对数组中的每个项目重复3次): 删除
代码>。您的意思是,如果找到匹配项,则回显“未找到”
这是一个问题,第二个问题是代码无法工作。您正在查找数组的值,而不是键。试试这个:
$var = array(
'{test1}' => 'something1',
'{test2}' => 'something2',
'{test3}' => 'something3'
);
$output = 'Please work it var {test1}!';
foreach($var as $search => $replace)
{
if(strstr($output, $search) == false)
{
echo 'not found<br>';
}
else
{
echo 'found<br>';
}
}
这让我有点困惑,因为strstrstr通常用于获取字符串的一部分。我认为更合适的方法是使用strpo。而且你没有测试钥匙。我甚至不知道为什么会这么说。试一试
foreach($var as $key=>$val)
{
if(strpos($output, $key) !== false)
{
//the key is contained in the output.
}
else
{
//not found
}
}
如果你让我们知道你想替换什么,我会帮你的。也不要听每个人告诉你用==与false进行比较或者!==是适当的比较,因为还有其他东西==false(即..0==false)
但实际上,如果您试图用值替换数组的键,则无需进行检查
foreach($var as $key=>$val)
$output = str_replace($key, $value, $output);
如果找不到该键,则不会发生任何事情,如果找到,则会将其替换为相应的值。不需要检查 您是否尝试过使用类似于的if(!strstrstr($output,$element))
?此外,您可能需要重新考虑if/else
的工作顺序。。。更可能的情况是找不到某些内容(对于其他
?)可能更好),但这部分取决于您……您正在比较数组元素值,而不是键。另外,您正在使用!==false
为双负。因此,当字符串未找到时执行的代码是echo“found”代码>+1,这绝对是个好建议。它是echo found,因为他已将其设置为在未找到字符串时echo found.:)好的,谢谢你,你的第二个代码就是我想要的,我不知道这个工作可以用这么小的代码来完成,谢谢
$var = array(
'{test1}' => 'something1',
'{test2}' => 'something2',
'{test3}' => 'something3'
);
$output = 'Please work it var {test1}!';
foreach($var as $search => $replace)
{
if(strstr($output, $search) == false)
{
echo 'not found<br>';
}
else
{
echo 'found - (' . str_replace($search, $replace, $output) . ')<br>';
}
}
foreach($var as $key=>$val)
{
if(strpos($output, $key) !== false)
{
//the key is contained in the output.
}
else
{
//not found
}
}
foreach($var as $key=>$val)
$output = str_replace($key, $value, $output);