Я делаю регулярное выражение, которое должно соответствовать всему так: [[First example]]
или же [[I'm an example]]
,
К сожалению, это не соответствует [[I'm an example]]
из-за апострофа.
Вот :
preg_replace_callback('/\[\[([^?"`*%#\\\\:<>]+)\]\]/iU', ...)
Простые апострофы (‘) разрешены, поэтому я действительно не понимаю, почему это не работает.
Есть идеи ?
РЕДАКТИРОВАТЬ: Вот что происходит, прежде чем я использую это регулярное выражение
// This match something [[[like this]]]
$contents = preg_replace_callback('/\[\[\[(.+)\]\]\]/isU',function($matches) {
return '<blockquote>'.$matches[1].'</blockquote>';
}, $contents);
// This match something [[like that]] but doesn't work with apostrophe/quote when
// the first preg_replace_callback has done his job
$contents = preg_replace_callback('/\[\[([^?"`*%#\\\\:<>]+)\]\]/iU', ..., $contents);
попробуй это:
$string = '[[First example]]';
$pattern = '/\[\[(.*?)\]\]/';
preg_match ( $pattern, $string, $matchs );
var_dump ( $matchs );
Вы можете использовать это регулярное выражение:
\[\[.*?]]
Php код
$re = '/\[\[.*?]]/';
$str = "not match this but [[Match this example]] and not this";
preg_match_all($re, $str, $matches);
Кстати, если вы хотите захватить содержимое в квадратных скобках, вы должны использовать группы захвата:
\[\[(.*?)]]