从变量中,我想删除双方括号[[]]及其间的所有内容,然后将其替换为 img inserted
我得到了以下列结果:
<p>hey</p><p>[[{"type":"media","view_mode":"media_large","fid":"67","attributes":{"alt":"","class":"media-image","height":"125","typeof":"foaf:Image","width":"125"}}]]</p>
更换后的变量应该变为:
<p>heey</p><p><b>img inserted<b></p>
我试过使用preg_replace但这对我来说似乎太先进了..
任何人都可以就如何实现这一点给我一些建议吗?
答案 0 :(得分:3)
试试这个:
<?PHP
$subject = '<p>hey</p><p>[[{\"type\":\"media\",\"view_mode\":\"media_large\",\"fid\":\"67\",\"attributes\":{\"alt\":\"\",\"class\":\"media-image\",\"height\":\"125\",\"typeof\":\"foaf:Image\",\"width\":\"125\"}}]]</p>';
$pattern = '/\[\[[^[]*]]/';
$replace = '<b>img inserted</b>';
$result = preg_replace($pattern, $replace, $subject);
echo '<p>Result: '.htmlspecialchars($result).'</p>';
?>
为了您的解释:/.../分隔正则表达式。 [[必须被转义,因为[是一个特殊字符,因此\[\[
。在那之后,我们得到任何不是[使用[^[]
的字符。根据需要经常重复:[^[]*
。之后,我们有两个括号:\]\]
此外,如果在方括号内有[。],则无效。从你的格式来看,情况并非如此。否则,你将不得不使用更复杂的语法,如果那些额外的[被转义([)),很可能使用反向引用。如果可以出现未转义的括号,则无法使用正则表达式解决此问题。
答案 1 :(得分:3)
$string = '<p>hey</p><p>[[{"type":"media","view_mode":"media_large","fid":"67","attributes":{"alt":"","class":"media-image","height":"125","typeof":"foaf:Image","width":"125"}}]]</p>';
$new_string = preg_replace('/\[\[.*?\]\]/', '<b>img inserted</b>', $string);
echo $new_string;