# Rakovskiy (26.02.2015 / 18:14)
Koenig, ну так не-то, нету типа String, а только int, float, boolean, array и имена классов.
И приходится городить
[php]
if (is_string($host) === false || is_string($domain) === false){
А зачем проверять на String?
Чаще всего приходится проверять на INT, а если проверяешь на цифры в строке (к примеру пришли в виде УРЛ параметра), там больше сгодится If(ctype_digit($string)) ты проверяешь, состоит ли строка только из цифр.
Rakovskiy, проверить хост и домен можно функцией get_headers, и если хост существует, точнее код 200 из ответа сервера, если существует то норм
http://annimon.com/code/?act=v ... =1276
любую хрень по сути можно привести к строке
Rakovskiy, ну или как выше писалось, сделай обертку для строки и проверяй через класс строки
# AlkatraZ (26.02.2015 / 18:20)
А зачем проверять на String?
Чаще всего приходится проверять на INT, а если проверяешь на цифры в строке (к примеру пришли в виде УРЛ параметра)
Значения host и domain подставляются в регулярку, полюбому они должны быть строкой.
К примеру:
host -> johncms
domain -> com
Есть ещё маска {host}_{domain}. В маску подставляем хост и домен. Получается johncms_com, а далее в тексте сообщения заменяем на определённый текст
Rakovskiy, вообще зря разделил домен хост, добавляй целиком, при желании можно мутить массив explode('.', $dom); а там уже вообще все равно какой сепаратор
# Koenig (26.02.2015 / 18:41)
Rakovskiy, вообще зря разделил домен хост, добавляй целиком, при желании можно мутить массив explode('.', $dom); а там уже вообще все равно какой сепаратор
Думал о таком варианте, даже пытался реализовать. Но, что если юзер введёт адрес с поддоменом. Как вариант end(explode('.', 'test.sait.ru')) но, а если вдруг захочет скрыть определённый модуль сайта, типа test.sait.ru/forum.php?
Проблема состоит в том, как реально выловить доменную зону. Поэтому решено вводить хост и домен отдельно.
# Rakovskiy (26.02.2015 / 18:31)
Значения host и domain подставляются в регулярку, полюбому они должны быть строкой.
Ну, чем городить огород, намного проще насильно привести к строке: $var = "$var";
Но я не знаю, откуда у тебя берутся данные и зачем регулярка?
Rakovskiy, не думал о таком варианте?
preg_match('#.*' . $domen[0] . '?'$domen[1]'.*#ui', $dom);
думаю смысл передал
Вмешаюсь не по теме.. зачем нужны тесты вроде понятно, а как выглядит тест?
# Koenig (26.02.2015 / 18:53)
Rakovskiy, не думал о таком варианте?
preg_match('#.*' . $domen[0] . '?'$domen[1]'.*#ui', $dom);
думаю смысл передал
Ты имеешь ввиду типа этого?
$site = ['site', 'ru'];
$text = 'Hello, welcome to my site_ru or site . ru';
echo preg_replace('#' . $site[0] . '(.?){1,3}' . $site[1] . '#ui', '*****', $text);
Результат: Hello, welcome to my ***** or *****