Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 替换字符串之间的字符_Php_Regex - Fatal编程技术网

Php 替换字符串之间的字符

Php 替换字符串之间的字符,php,regex,Php,Regex,也许对我来说做这件事已经太晚了,但我正在尝试用PHP中的正则表达式替换2个字符串之间的字符 示例字符串: other | text [tag]text|more text|and more[/tag] end | text 我的目标是用[tag]和[/tag]之间的替换 尝试过这个,但似乎没那么容易: /<td>(\|)<td>/gsi /(\ |)/gsi 我搜索了一下,但找不到答案 希望您能提供帮助,谢谢首先,找到[tag]s中的内容,然后找到管道。PHP 5.

也许对我来说做这件事已经太晚了,但我正在尝试用PHP中的正则表达式替换2个字符串之间的字符

示例字符串:

other | text [tag]text|more text|and more[/tag] end | text
我的目标是用
[tag]
[/tag]
之间的

替换

尝试过这个,但似乎没那么容易:

/<td>(\|)<td>/gsi
/(\ |)/gsi
我搜索了一下,但找不到答案


希望您能提供帮助,谢谢

首先,找到
[tag]
s中的内容,然后找到管道。PHP 5.3:

$result = preg_replace_callback('/\[tag\](.+?)\[\/tag\]/i', function($match) {
    return str_replace('|', '<br />', $match[1]);
}, $str);
$result=preg\u replace\u回调('/\[tag\](.+?)\[\/tag\]/i',函数($match){
返回str_replace('|','
',$match[1]); }美元/平方米);
首先,找到
[tag]
s内的内容,然后找到管道。PHP 5.3:

$result = preg_replace_callback('/\[tag\](.+?)\[\/tag\]/i', function($match) {
    return str_replace('|', '<br />', $match[1]);
}, $str);
$result=preg\u replace\u回调('/\[tag\](.+?)\[\/tag\]/i',函数($match){
返回str_replace('|','
',$match[1]); }美元/平方米);
很难理解你想做什么。是否要替换给定html标记两次出现之间出现的字符|的每次出现?如果是这样的话,是否保证标签只出现两次(或者可能出现3、4等)?@jahroy如果我读对了,是的,很难理解你想做什么。是否要替换给定html标记两次出现之间出现的字符|的每次出现?如果是这样的话,标记是否保证只出现两次(或者可能出现3、4等)?@jahroy如果我读对了,是的,它是Hanks,但我自己找到了其余的,将$match[1]更改为$match[0],因为我想保留[tag]的标记,但我自己找到了其余的,将$match[1]更改为$match[0],因为我想保留[tag]的