Еще один вопрос с регулярным выражением PHP

Ребята, это, вероятно, будет довольно просто, но как я могу найти все совпадения с использованием регулярного выражения этого события при загрузке текста.

[[data in here]] 

НАПРИМЕР:

 Blah blah blah [[find]] and maybe [[this]] 

Поэтому я могу найти вхождения, а затем заменить их как URL-адреса.

Имеет ли это смысл?

Я попытался использовать

 preg_match_all("/[[([^<]*)]]/", $data, $matches, PREG_OFFSET_CAPTURE); 

Но возвращает ошибки. Есть идеи? 🙂

Solutions Collecting From Web of "Еще один вопрос с регулярным выражением PHP"

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

 preg_match_all("/\[\[(.+?)\]\]/", $data, $matches, PREG_OFFSET_CAPTURE); 

Может быть ….

 "/\[.*\]/" 

? Просто дикая догадка.

Я думаю, что ваша основная проблема заключается в том, что вам нужно избегать скобок «[]», поскольку они являются особыми символами.

Вам нужно избегать символов '[' и ']' – это специальные символы в регулярном выражении. Вероятно, вам лучше всего это сделать с preg_replace_callback()

 function makeURL($matches) { $url = $matches[1]; return "<a href=\"http://$url\">$url</a>"; } $data = 'My website is [[www.example.com]].'; echo preg_replace_callback('/\[\[(.*?)\]\]/', 'makeURL', $data); // output: My website is <a href="http://www.example.com">www.example.com</a> 

Вы можете настроить makeURL() чтобы переписать URL-адрес, как вам угодно.

[ и ] имеют смысл в синтаксисе регулярных выражений. Чтобы соответствовать им, вам нужно «сбежать» с помощью символа \ . Таким образом, ваше регулярное выражение будет:

 "/\[\[(.+?)\]\]/" 

Использование символов [ и ] и как их избежать – это довольно базовое знание регулярных выражений. Не быть грубым, но я предлагаю потратить немного больше времени на изучение регулярных выражений, прежде чем писать какие-либо для производственного кода.