我遇到麻烦让我的preg_replace工作到某个字符串。这是我原始流的示例:
“这只是验证{my | your | their} regex”的{simple | huge | fast}测试“
我想要做的是:我想将“{}”之间的部分替换为其间的一个(第一个)。例如:
“这只是验证我的正则表达式的简单测试”
基本上我目前正在做的是:
foreach ($zeilen as $key => $value) {
preg_match_all('/\{(.*?)\}/', $value[15], $arr1);
foreach($arr1[1] as $key2 => $arrValue){
preg_match_all('/(.*?)\|/', $arrValue, $arr2);
}
preg_replace('/\{(.*?)\}/', 'test', $value[15]);
echo '<tr>';
echo '<td>'. $value[15] . '</td>';
echo '</tr>';
}
我在那里使用foreach循环,因为我想要替换完全相同的模式的不同行。我很确定有更好的方法可以做到这一点,也许有人甚至可以向我推荐一个。我的问题是,preg_replace根本不起作用。 $ value [15]与{}之间的单词完全一致。没有显示“测试”。我不是很擅长正则表达式!
非常感谢任何人的帮助!
答案 0 :(得分:1)
您不会将替换值存储在任何位置。此外,如果在循环外使用替换,则可能会影响模式的所有出现。我认为这会有所帮助:
foreach ($zeilen as $key => $value) {
preg_match_all('/\{(.*?)\}/', $value[15], $arr1);
foreach($arr1[1] as $key2 => $arrValue){
preg_match('/(.*?)\|/', $arrValue, $arr2);
$value[15]=str_replace($arr1[0][$key2], $arr2[1], $value[15]);
}
echo '<tr>';
echo '<td>'. $value[15] . '</td>';
echo '</tr>';
}