删除两个方括号之间的所有内容

时间:2014-07-23 06:50:56

标签: php html regex preg-replace phpbb

我一直试图删除一些文本......在两组包围之间...两个小时我已经尝试了所有内容...我已经在这里找到现有的问题并且答案对我不起作用......所以这里 我有什么

 [attachment=0:randomID]<!-- ia0 -->randomIMGnam.png<!-- ia0 -->[/attachment:randomID]

我真的想从字符串的开头删除所有这些我能够删除括号内的所有内容但是每次都失败以删除图像名称

是的,这是来自phpbb我已经从我的数据库中取出它没有问题,但是当我回应它时不希望它被显示。

在此先感谢我真的希望我真的希望有人可以提供帮助

编辑:我尝试过的 1. $extension_pos = strrpos($entry, '<!-- ia0 -->'); // find position of the last dot, so where the extension starts $output = substr($entry, 0, $extension_pos) . '' . substr($entry, $extension_pos);

2. $output= preg_replace('#\].*?\[#', '', $entry);

  1. $output = preg_replace('/\[[^]]*\]/', '', $entry);

  2. $output explode(']', $entry);

  3. $imagename = preg_replace('#([attachment.*?]).*?([/attachment.*?])#', '$1$2', $entry);

3 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式替换:

$string = ' [attachment=0:randomID]<!-- ia0 -->randomIMGnam.png<!-- ia0 -->[/attachment:randomID]';
$string = preg_replace('/\[(.*?)\]/', '', $string);

答案 1 :(得分:0)

您可以使用正则表达式,例如:

<?php
    $string = 'test [attachment=0:randomID]randomIMGnam.png[/attachment:randomID] test2 [something]
    test3

    [/something] test4';


    echo preg_replace('#(\[(.*)\](.*)\[/.*\])#Us','',$string);
    // output test test2 test4 


?>

答案 2 :(得分:0)

使用正则表达式可能对此类任务很重要 你可以改为使用一个简单的推理,每当你遇到一个开括号增加一个计数器时,每当你遇到一个关闭括号时,减去一个计数器。

只要你的柜台是&gt; 0只是忽略字符。