繁体   English   中英

简单的preg_replace无法正常工作

[英]Simple preg_replace not working

我在让我的preg_replace为某个字符串工作时遇到麻烦。 这是原始流的外观示例:

“这只是一个{简单|巨大|快速}测试,用于验证{my |您的|他们的}正则表达式”

我想做的是:我想用介于两者之间的一个(第一个)单词替换“ {}”之间的部分。 例如:

“这只是验证我的正则表达式的简单测试”

所以基本上我现在正在做的是:

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]与前面的{}单词完全一样。 没有显示“测试”。 我不是很擅长正则表达式!

非常感谢任何帮助!

您不会在任何地方存储替换的值。 另外,如果在循环外部使用replace,则可能会影响模式的所有出现。 我认为这会有所帮助:

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>';

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM