Если я вас правильно понял, у вас есть несколько docker-compose.yml
файлов, и вам нужны сервисы для их взаимодействия друг с другом. Логическое предложение состоит в том, чтобы иметь глобально определенную сеть, скажем,
docker network create testapis
и иметь все службы, связанные с ней:
docker-compose.yml [118 ]
...
networks:
default:
external:
name: testapis
В этом случае все сервисы из всех файлов docker-compose
будут видеть друг друга под своими именами хостов (api1
, api2
и т. Д.), И не потребуется показывать порты (если вы не хотите использовать сервисы). извне этой сети)
Используйте взрывание () функция и отдельный или пробелами или запятыми. Пример:
$string = 'tag1 tag-2 tag#3';
$tags = explode(' ', $string); //Tags will be an array
Разделение на \s + (пробел) вместо \W + (неалфавитно-цифровой).
Я предполагаю, что Вы могли сначала попытаться очистить строку прежде, чем разделить его на теги:
# List characters that you would want to exclude from your tags and clean the string
$exclude = array( '/[?&\/]/', '/\s+/');
$replacements = array('', ' ');
$tags = preg_replace($exclude, $replacements, $tags);
# Now split:
$tagsArray = explode(' ', $tags);
Вы могли, вероятно, принять белый подход списка к этому также и скорее иметь символы, которые Вы принимаете перечисленный в Вашем шаблоне.
Вы сказали, что хотели, чтобы это работало как stackoverflow теггер. Этот теггер разделяет их пробельным символом "".
Если Вы хотели бы, чтобы это было Вашим поведением также, просто используйте:
mb_split('\s+', $text)
вместо:
mb_split('\W+', $text)
Удачи!
Я использую этот smart_explode () функция для парсинга тегов в моем приложении:
function smart_explode ($exploder, $string, $sort = '') {
if (trim ($string) != '') {
$string = explode ($exploder, $string);
foreach ($string as $i => $k) {
$string[$i] = trim ($k);
if ($k == '') unset ($string[$i]);
}
$u = array_unique ($string);
if ('sort' == $sort) sort ($u);
return $u;
} else {
return array ();
}
}
Это взрывает $string в массив при помощи $exploder как разделитель (обычно запятая), удаляет дублированный, обрезает пробелы вокруг тегов и даже сортирует теги для Вас, если $sort является 'видом'. Это возвратит пустой массив, когда ничто не будет в $string.
Использование похоже:
$mytaglist = smart_explode (',', ' PHP, ,,regEx ,PHP');
Вышеупомянутое возвратится:
array ('PHP', 'regEx')
Для фильтрации символов, Вы не любите, делаете a
$mytaglist = str_replace (array ('?', '$', '%'), '_', $mytaglist);
прежде smart_exploding (список “плохих” символов в массиве, который будет заменен подчеркиванием).
Корректный подход к обработке тегов зависит от Ваших предпочтений на обработке входа: можно или удалить недопустимые теги полностью или попытаться убрать теги, таким образом, они становятся допустимыми.
Белый список подхода к определению допустимых символов должен использоваться в очистке входа - существует просто слишком много проблематичных символов для помещения в черный список.
mb_internal_encoding('utf8');
$tags= 'to# do!"¤ fix-this str&ing';
$allowedLetters='\w';
// Note that the hyphen must be first or last in a character class pattern,
// to match hyphens, instead of specifying a character set range
$allowedSpecials='_+#-';
Первый подход удаляет недопустимые теги полностью:
// The first way: Ignoring invalid tags
$tagArray = mb_split(' ', $tags);
$pattern = '^[' . $allowedLetters . $allowedSpecials . ']+$';
$validTags = array();
foreach($tagArray as $tag)
{
$tag = trim($tag);
$isValid = mb_ereg_match($pattern, $tag);
if ($isValid)
$validTags[] = $tag;
}
Второй подход пытается убрать теги:
// The second way: Cleaning up the tag input
// Remove non-whitelisted characters
$pattern = '[^' . $allowedLetters . $allowedSpecials .']';
$cleanTags = mb_ereg_replace($pattern, ' ', $tags);
// Trim multiple white spaces.
$pattern = '\s+';
$cleanTags = mb_ereg_replace($pattern, ' ', $cleanTags);
$tags = mb_split(' ',$cleanTags);
Замена запрещенных символов с пробелом иногда приводит к проблемам - например, вышеупомянутое "str&ing" преобразовывается в "луг ул.". Удаление запрещенных символов полностью привело бы к "строке", которая более полезна в некоторых случаях.
Использовать preg_match_all
.
$tags = array();
if(preg_match_all('/\s*(.*)\s*/U',$tags)) unset($tags[0]);
//now in $tags you have an array of tags.
если теги находятся в UTF-8, добавить u
модификатор к regexp.