2016-08-09 3 views
1

Как заменить все ошибки <p>[gallery ids=""]</p>, если они существуют только с одним?Заменить все вхождение чего-то только одним

$string = "/\<p\>\[gallery ids=\"\"\]\<\/p\>/"; 
    $content = "asdfsdfdsafasdfaasfddsaf <p>[gallery ids=""]</p><p>[gallery ids=""]</p><p>[gallery ids=""]</p>"; 
    if (preg_match_all($string, $content, $matches)) { 

    } 

The $content должен быть asdfsdfdsafasdfaasfddsaf <p>[gallery ids=""]</p>

ответ

2

Простого решения с использованием preg_replace функции:

$content = 'asdfsdfdsafasdfaasfddsaf <p>[gallery ids=""]</p><p>[gallery ids=""]</p><p>[gallery ids=""]</p>'; 
$content = preg_replace("/(<p>\[gallery ids=\"\"\]<\/p>){2,}/", "$1", $content); 

print_r($content); 
1

Вы вытекающий путем ко многим вещам, вы должны найти этот вопрос с квантором, {1,} в этом case: от 1 до неограниченного времени.

Также добавьте глобальный модификатор g, если у вас есть символы новой строки в вашем контенте.

$content = preg_replace('/(<p>\[gallery ids=""\]<\/p>){1,}/g', '$1', $content);