2013-07-13 2 views
1

У меня есть этот массив возможных значений, которые я хочу заменить preg_replace функции:поиск preg_replace для строки, которая не соответствует шаблону вместо строки, которые соответствуют шаблону

$attr = array('b','i','u','left','center','right'); 

foreach($attr as $a) { 
    // strip bbcode 
    $str = preg_replace('#\['.$a.'\](.*)\[/'.$a.'\]#im','$1',$str); 
} 
return $str; 

но вместо использования Еогеасп и перекручивание через каждое возможное исключение, я хочу сделать это как полосу чего-то, что не является img. Это возможно?

ответ

1

Возможно, вы хотите удалить все теги, кроме img теги? Используйте это:

$str = preg_replace('#\[(?!/?img).+?]#im','',$str); 
+0

Ваш шаблон работает для меня, хотя в вашем коде была ошибка. говорит: «preg_replace() [function.preg-replace]: разделитель не должен быть буквенно-цифровым или обратным слэшем», если он исправлен путем добавления разделителей. спасибо btw – user949000

+0

О, извините за это ... Я проверил регулярное выражение в приглашении PowerShell (без разделителей регулярных выражений в PS, просто кавычки) и скопирован оттуда. Я добавлю разделители и модификаторы режимов, чтобы исправить ответ для потомков. –

Смежные вопросы