2012-04-13 145 views
0

也许这对我来说太迟了,但我试图用PHP中的正则表达式替换2个字符串之间的字符。替换字符串之间的字符

例字符串:

other | text [tag]text|more text|and more[/tag] end | text 

我的目标是与<br/>[tag][/tag]之间更换|

这个试过了,看来它是不是很简单,但:

/<td>(\|)<td>/gsi 

搜索了一下,但不能做出与我找到的东西答案。

希望能对你有所帮助,谢谢

+0

很难理解你想要做什么。你是否想要替换发生在给定html标签的两次出现之间的字符_ | _的每个出现?如果是这样,是否保证只有两次出现的标签(或者可能有3,4等...)? – jahroy 2012-04-13 23:23:52

+0

@jahroy如果我正确地读了这个,是的,它是 – trembon 2012-04-13 23:27:13

回答

3

首先,发现里面有什么[tag] S,然后找到管道。 PHP 5.3:

$result = preg_replace_callback('/\[tag\](.+?)\[\/tag\]/i', function($match) { 
    return str_replace('|', '<br />', $match[1]); 
}, $str); 
+0

+1对于'preg_replace_callback' – Robbie 2012-04-13 23:27:15

+0

谢谢,发现其余的我自己虽然,改变$匹配[1]为$匹配[0],因为我想保留[标签]的 – trembon 2012-04-13 23:33:16