我有一个描述字段,用户输入{tag}This has to be replaced{/tag}
我想用另一个替换文本。为此,我使用以下代码:
<?php
$find = "/[^{tag}](.*)[^{\/tag}]/";
$string = '{tag}This has to be replaced {/tag}';
echo preg_replace($find, 'new text',$string);
?>
但我没有得到理想的结果。此外,在输出中我只想要:new text
。我不想这样:{tag}New text{/tag}
除此之外,我如何才能获得这些标签之间的文字?
请指导我这个
答案 0 :(得分:2)
使用非贪婪的正则表达式..
$find = '~{tag}.*?{/tag}~';
echo preg_replace($find, 'new text',$string);
如果tag
/tag
之间的文字包含换行符,则必须使用DOTALL修饰符。
$find = '~(?s){tag}.*?{/tag}~';
要在这些标记之间获取文本,请使用捕获组/.
$find = '~{tag}(.*?){/tag}~';
$out = preg_match($find, $str);
echo $out[1];