13.06.2017 09:56:45 am
Мне как то потребовалось проверить есть ли что то в
Таким образом делал замену локальных ссылок на ссылки с анкорами, для phpFox. Пример:
(.*?)
и если есть выполнять определенное действие. Я это реализовал при помощи функции preg_replace_callback. Пример реализации:
$str = preg_replace_callback(
'/srt(.*?)srt(.*?)/',
function($match)
{
$a = $match[1];
$b = !empty($match[2]) ? 'Своя подстрока' : null; // Если второй "(.*?)" есть, добавляем свою подстроку, в противном случае - переменная null
return 'trs' . $a . 'trs' . $b;
},
$str);
Таким образом делал замену локальных ссылок на ссылки с анкорами, для phpFox. Пример:
$value = preg_replace_callback(
'~(?<!=)' . $path . 'forum\/thread\/' . $id . '\/(page_[0-9]+\/)?(#?(post|view)_?[0-9]+\/?)?~is',
function($match) use($path, $topic, $id)
{
$url = $path . 'forum/thread/' . $id . '/';
$anchor = $topic['title'];
if (!empty($match[1]))
{
$param = trim($match[1], '/');
$param = explode('_', $param);
$anchor .= ' (' . Phpfox::getPhrase('pages.page') . ': #' . $param[1] . (!empty($match[2]) ? ' • ' : ')');
$url .= $param[0] . '_' . $param[1] . '/';
}
if (!empty($match[2]))
{
$param[0] = preg_replace('/[^a-z]/i', '', $match[2]);
$param[1] = preg_replace('/[^0-9]/', '', $match[2]);
$anchor .= (!empty($match[1]) ? null : ' (') . Phpfox::getPhrase('forum.message') . ': #' . $param[1] . ')';
$url .= $param[0] . '_' . $param[1] . '/';
}
return '[url=' . trim($url) . ']' . trim($anchor) . '[/url]';
},
$value);
- Жалоба