Ребята, это, вероятно, будет довольно просто, но как я могу найти все совпадения с использованием регулярного выражения этого события при загрузке текста.
[[data in here]]
НАПРИМЕР:
Blah blah blah [[find]] and maybe [[this]]
Поэтому я могу найти вхождения, а затем заменить их как URL-адреса.
Имеет ли это смысл?
Я попытался использовать
preg_match_all("/[[([^<]*)]]/", $data, $matches, PREG_OFFSET_CAPTURE);
Но возвращает ошибки. Есть идеи? 🙂
Попробуй это:
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-адрес, как вам угодно.
[
и ]
имеют смысл в синтаксисе регулярных выражений. Чтобы соответствовать им, вам нужно «сбежать» с помощью символа \
. Таким образом, ваше регулярное выражение будет:
"/\[\[(.+?)\]\]/"
Использование символов [
и ]
и как их избежать – это довольно базовое знание регулярных выражений. Не быть грубым, но я предлагаю потратить немного больше времени на изучение регулярных выражений, прежде чем писать какие-либо для производственного кода.