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


remove everything between two square brackets

我一直在尝试删除一些文本…在两组括号之间…两个小时以来,我什么都试过了。我已经在这里找到了现有的问题,答案不适合我…好了我有什么

 [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);

您可以使用这个正则表达式来替换:

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

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

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

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

?>

对于这种任务,使用regex可能会很繁重。
相反,您可以使用一个简单的推理,每当遇到左括号时,将计数器加1,每当遇到右括号时,将计数器减1。

只要计数器> 0就忽略字符