PHP: удалить двойные квадратные скобки и все, что между

Из переменной я хочу удалить двойные квадратные скобки [[ ]] и все, что между ними, а затем заменить его на вставленный img

У меня есть следующий результат столбца:

<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, но это пока слишком сложно для меня..

Может кто-нибудь дать мне совет, как этого добиться?

2 ответа

Решение
$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;

Попробуй это:

<?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>';
?> 

Для вашего объяснения: /.../ разграничивает регулярное выражение. [[Должен быть экранирован, потому что [это специальный символ, таким образом \[\[, После этого мы получаем любой символ, который не является [с помощью [^[], Это повторяется так часто, как необходимо: [^[]*, После этого у нас есть две скобки: \]\]

Кроме того, это не будет работать, если в квадратных скобках есть [. Судя по вашему формату, это не тот случай. В противном случае вам придется использовать более сложный синтаксис, скорее всего, с использованием обратных ссылок, если эти дополнительные [экранированы ([). Если могут появляться неэкранированные скобки, вы не можете решить это с помощью регулярных выражений.

Другие вопросы по тегам