Completed
Pull Request — master (#5)
by
unknown
03:25
created

EmailCheck::isValid()   C

Complexity

Conditions 16
Paths 20

Size

Total Lines 57
Code Lines 32

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 26
CRAP Score 17.0743

Importance

Changes 7
Bugs 0 Features 1
Metric Value
c 7
b 0
f 1
dl 0
loc 57
ccs 26
cts 31
cp 0.8387
rs 6.5273
cc 16
eloc 32
nc 20
nop 5
crap 17.0743

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace voku\helper;
4
5
use TrueBV\Punycode;
6
7
/**
8
 * E-Mail Check Class
9
 *
10
 * -> use "EmailCheck::isValid()" to validate a email-address
11
 *
12
 * @author      Lars Moelleken
13
 * @copyright   Copyright (c) 2015, Lars Moelleken (http://moelleken.org/)
14
 * @license     http://opensource.org/licenses/MIT	MIT License
15
 */
16
class EmailCheck
17
{
18
  public static $domainsExample = array(
19
      'test.de',
20
      'test.com',
21
      'test.net',
22
      'test.org',
23
      'example.de',
24
      'example.com',
25
      'example.net',
26
      'example.org',
27
  );
28
29
  /**
30
   * @var array
31
   *
32
   * here you can find more domains:
33
   * - https://github.com/vboctor/disposable_email_checker
34
   * - https://gist.github.com/michenriksen/8710649
35
   */
36
  public static $domainsTemporary = array(
37
      '0-mail.com',
38
      '0815.ru',
39
      '0815.ru0clickemail.com',
40
      '0clickemail.com',
41
      '0wnd.net',
42
      '0wnd.org',
43
      '10minutemail.com',
44
      '10minutemail.co.za',
45
      '20minutemail.com',
46
      '2prong.com',
47
      '30minutemail.com',
48
      '33mail.com',
49
      '3d-painting.com',
50
      '4warding.com',
51
      '4warding.net',
52
      '4warding.org',
53
      '60minutemail.com',
54
      '675hosting.com',
55
      '675hosting.net',
56
      '675hosting.org',
57
      '6paq.com',
58
      '6url.com',
59
      '75hosting.com',
60
      '75hosting.net',
61
      '75hosting.org',
62
      '7tags.com',
63
      '9ox.net',
64
      'a-bc.net',
65
      'afrobacon.com',
66
      'ag.us.to',
67
      'ajaxapp.net',
68
      'amilegit.com',
69
      'amiri.net',
70
      'amiriindustries.com',
71
      'anonbox.net',
72
      'anonymbox.com',
73
      'antichef.com',
74
      'antichef.net',
75
      'antispam.de',
76
      'armyspy.com',
77
      'atvclub.msk.ru',
78
      'azmeil.tk',
79
      'baxomale.ht.cx',
80
      'beefmilk.com',
81
      'binkmail.com',
82
      'bio-muesli.net',
83
      'bobmail.info',
84
      'bodhi.lawlita.com',
85
      'bofthew.com',
86
      'bootybay.de',
87
      'boun.cr',
88
      'bouncr.com',
89
      'brefmail.com',
90
      'broadbandninja.com',
91
      'bsnow.net',
92
      'bu.mintemail.com',
93
      'bugmenot.com',
94
      'bumpymail.com',
95
      'casualdx.com',
96
      'centermail.com',
97
      'centermail.net',
98
      'chogmail.com',
99
      'choicemail1.com',
100
      'consumerriot.com',
101
      'cool.fr.nf',
102
      'correo.blogos.net',
103
      'cosmorph.com',
104
      'courriel.fr.nf',
105
      'courrieltemporaire.com',
106
      'crazymailing.com',
107
      'cubiclink.com',
108
      'curryworld.de',
109
      'cust.in',
110
      'cuvox.de',
111
      'dacoolest.com',
112
      'dandikmail.com',
113
      'dayrep.com',
114
      'deadaddress.com',
115
      'deadspam.com',
116
      'despam.it',
117
      'despammed.com',
118
      'devnullmail.com',
119
      'dfgh.net',
120
      'digitalsanctuary.com',
121
      'dingbone.com',
122
      'discardmail.com',
123
      'discardmail.de',
124
      'disposableaddress.com',
125
      'disposableemailaddresses.com',
126
      'disposeamail.com',
127
      'disposemail.com',
128
      'dispostable.com',
129
      'dm.w3internet.co.uk',
130
      'dm.w3internet.co.ukexample.com',
131
      'dodgeit.com',
132
      'dodgit.com',
133
      'dodgit.org',
134
      'doiea.com',
135
      'donemail.ru',
136
      'dontreg.com',
137
      'dontsendmespam.de',
138
      'drdrb.com',
139
      'drdrb.net',
140
      'dump-email.info',
141
      'dumpandjunk.com',
142
      'dumpmail.de',
143
      'dumpyemail.com',
144
      'e-mail.com',
145
      'e4ward.com',
146
      'easytrashmail.com',
147
      'einrot.com',
148
      'email.net',
149
      'email60.com',
150
      'emaildienst.de',
151
      'emailias.com',
152
      'emailigo.de',
153
      'emailinfive.com',
154
      'emailmiser.com',
155
      'emailsensei.com',
156
      'emailtemporario.com.br',
157
      'emailto.de',
158
      'emailwarden.com',
159
      'emailx.at.hm',
160
      'emailxfer.com',
161
      'emeil.in',
162
      'emeil.ir',
163
      'emz.net',
164
      'enterto.com',
165
      'ephemail.net',
166
      'etranquil.com',
167
      'etranquil.net',
168
      'etranquil.org',
169
      'evopo.com',
170
      'explodemail.com',
171
      'fakeinbox.com',
172
      'fakeinformation.com',
173
      'fansworldwide.de',
174
      'fastacura.com',
175
      'fastchevy.com',
176
      'fastchrysler.com',
177
      'fastkawasaki.com',
178
      'fastmazda.com',
179
      'fastmitsubishi.com',
180
      'fastnissan.com',
181
      'fastsubaru.com',
182
      'fastsuzuki.com',
183
      'fasttoyota.com',
184
      'fastyamaha.com',
185
      'filzmail.com',
186
      'fixmail.tk',
187
      'fizmail.com',
188
      'fleckens.hu',
189
      'fr33mail.info',
190
      'frapmail.com',
191
      'front14.org',
192
      'fudgerub.com',
193
      'fux0ringduh.com',
194
      'garliclife.com',
195
      'gelitik.in',
196
      'get1mail.com',
197
      'get2mail.fr',
198
      'getairmail.com',
199
      'getonemail.com',
200
      'getonemail.net',
201
      'ghosttexter.de',
202
      'girlsundertheinfluence.com',
203
      'gishpuppy.com',
204
      'goemailgo.com',
205
      'gowikibooks.com',
206
      'gowikicampus.com',
207
      'gowikicars.com',
208
      'gowikifilms.com',
209
      'gowikigames.com',
210
      'gowikimusic.com',
211
      'gowikinetwork.com',
212
      'gowikitravel.com',
213
      'gowikitv.com',
214
      'great-host.in',
215
      'greensloth.com',
216
      'grr.la',
217
      'gsrv.co.uk',
218
      'guerillamail.biz',
219
      'guerillamail.com',
220
      'guerillamail.net',
221
      'guerillamail.org',
222
      'guerrillamail.biz',
223
      'guerrillamail.com',
224
      'guerrillamail.de',
225
      'guerrillamail.net',
226
      'guerrillamail.org',
227
      'guerrillamailblock.com',
228
      'gustr.com',
229
      'h.mintemail.com',
230
      'h8s.org',
231
      'haltospam.com',
232
      'hatespam.org',
233
      'hidemail.de',
234
      'hidzz.com',
235
      'hochsitze.com',
236
      'hotpop.com',
237
      'hulapla.de',
238
      'ieatspam.eu',
239
      'ieatspam.info',
240
      'ieh-mail.de',
241
      'ihateyoualot.info',
242
      'iheartspam.org',
243
      'imails.info',
244
      'inbax.tk',
245
      'inbox.si',
246
      'inbox2.info',
247
      'inboxalias.com',
248
      'inboxclean.com',
249
      'inboxclean.org',
250
      'incognitomail.com',
251
      'incognitomail.net',
252
      'incognitomail.org',
253
      'insorg-mail.info',
254
      'ipoo.org',
255
      'irish2me.com',
256
      'iwi.net',
257
      'jetable.com',
258
      'jetable.fr.nf',
259
      'jetable.net',
260
      'jetable.org',
261
      'jnxjn.com',
262
      'jourrapide.com',
263
      'junk1e.com',
264
      'kasmail.com',
265
      'kaspop.com',
266
      'keepmymail.com',
267
      'killmail.com',
268
      'killmail.net',
269
      'kir.ch.tc',
270
      'klassmaster.com',
271
      'klassmaster.net',
272
      'klzlk.com',
273
      'koszmail.pl',
274
      'kulturbetrieb.info',
275
      'kurzepost.de',
276
      'letthemeatspam.com',
277
      'lhsdv.com',
278
      'lifebyfood.com',
279
      'link2mail.net',
280
      'litedrop.com',
281
      'lol.ovpn.to',
282
      'lookugly.com',
283
      'lopl.co.cc',
284
      'lortemail.dk',
285
      'lr78.com',
286
      'm4ilweb.info',
287
      'ma1l.bij.pl',
288
      'maboard.com',
289
      'mail-temporaire.fr',
290
      'mail.by',
291
      'mail.mezimages.net',
292
      'mail2rss.org',
293
      'mail333.com',
294
      'mail4trash.com',
295
      'mailbidon.com',
296
      'mailblocks.com',
297
      'mailcatch.com',
298
      'maildrop.cc',
299
      'maileater.com',
300
      'mailed.in',
301
      'mailexpire.com',
302
      'mailfa.tk',
303
      'mailfreeonline.com',
304
      'mailimate.com',
305
      'mailin8r.com',
306
      'mailinater.com',
307
      'mailinator.com',
308
      'mailinator.net',
309
      'mailinator2.com',
310
      'mailincubator.com',
311
      'mailismagic.com',
312
      'mailme.ir',
313
      'mailme.lv',
314
      'mailmetrash.com',
315
      'mailmoat.com',
316
      'mailnator.com',
317
      'mailnesia.com',
318
      'mailnull.com',
319
      'mailshell.com',
320
      'mailsiphon.com',
321
      'mailslite.com',
322
      'mailtemp.info',
323
      'mailtothis.com',
324
      'mailzilla.com',
325
      'mailzilla.org',
326
      'mbx.cc',
327
      'mega.zik.dj',
328
      'meinspamschutz.de',
329
      'meltmail.com',
330
      'messagebeamer.de',
331
      'mierdamail.com',
332
      'mintemail.com',
333
      'mjukglass.nu',
334
      'mobi.web.id',
335
      'moburl.com',
336
      'moncourrier.fr.nf',
337
      'monemail.fr.nf',
338
      'monmail.fr.nf',
339
      'monumentmail.com',
340
      'msa.minsmail.com',
341
      'mt2009.com',
342
      'mt2014.com',
343
      'mx0.wwwnew.eu',
344
      'mycleaninbox.net',
345
      'mypartyclip.de',
346
      'myphantomemail.com',
347
      'myspaceinc.com',
348
      'myspaceinc.net',
349
      'myspaceinc.org',
350
      'myspacepimpedup.com',
351
      'myspamless.com',
352
      'mytempemail.com',
353
      'mytrashmail.com',
354
      'naver.com',
355
      'neomailbox.com',
356
      'nepwk.com',
357
      'nervmich.net',
358
      'nervtmich.net',
359
      'netmails.com',
360
      'netmails.net',
361
      'netzidiot.de',
362
      'neverbox.com',
363
      'no-spam.ws',
364
      'nobulk.com',
365
      'noclickemail.com',
366
      'nogmailspam.info',
367
      'nomail.xl.cx',
368
      'nomail2me.com',
369
      'nomorespamemails.com',
370
      'nospam.ze.tc',
371
      'nospam4.us',
372
      'nospamfor.us',
373
      'nospamthanks.info',
374
      'notmailinator.com',
375
      'nowmymail.com',
376
      'nullbox.info',
377
      'nurfuerspam.de',
378
      'nus.edu.sg',
379
      'nwldx.com',
380
      'objectmail.com',
381
      'obobbo.com',
382
      'odaymail.com',
383
      'oneoffemail.com',
384
      'onewaymail.com',
385
      'onlatedotcom.info',
386
      'online.ms',
387
      'oopi.org',
388
      'opayq.com',
389
      'ordinaryamerican.net',
390
      'otherinbox.com',
391
      'ourklips.com',
392
      'outlawspam.com',
393
      'ovpn.to',
394
      'owlpic.com',
395
      'pancakemail.com',
396
      'pimpedupmyspace.com',
397
      'pjjkp.com',
398
      'plexolan.de',
399
      'politikerclub.de',
400
      'poofy.org',
401
      'pookmail.com',
402
      'privacy.net',
403
      'privymail.de',
404
      'proxymail.eu',
405
      'prtnx.com',
406
      'punkass.com',
407
      'putthisinyourspamdatabase.com',
408
      'qq.com',
409
      'quickinbox.com',
410
      'rcpt.at',
411
      'reallymymail.com',
412
      'recode.me',
413
      'recursor.net',
414
      'regbypass.com',
415
      'regbypass.comsafe-mail.net',
416
      'rejectmail.com',
417
      'rhyta.com',
418
      'rklips.com',
419
      'rmqkr.net',
420
      'rppkn.com',
421
      'rtrtr.com',
422
      's0ny.net',
423
      'safe-mail.net',
424
      'safersignup.de',
425
      'safetymail.info',
426
      'safetypost.de',
427
      'sandelf.de',
428
      'saynotospams.com',
429
      'selfdestructingmail.com',
430
      'selfdestructingmail.org',
431
      'sendspamhere.com',
432
      'sharklasers.com',
433
      'shieldedmail.com',
434
      'shiftmail.com',
435
      'shitmail.me',
436
      'shortmail.net',
437
      'sibmail.com',
438
      'sify.com',
439
      'skeefmail.com',
440
      'slaskpost.se',
441
      'slopsbox.com',
442
      'slushmail.com',
443
      'smaakt.naar.gravel',
444
      'smapfree24.com',
445
      'smapfree24.de',
446
      'smapfree24.eu',
447
      'smapfree24.info',
448
      'smapfree24.org',
449
      'smashmail.de',
450
      'smellfear.com',
451
      'snakemail.com',
452
      'sneakemail.com',
453
      'sofimail.com',
454
      'sofort-mail.de',
455
      'sogetthis.com',
456
      'soodonims.com',
457
      'spam.la',
458
      'spam.su',
459
      'spam4.me',
460
      'spamavert.com',
461
      'spambob.com',
462
      'spambob.net',
463
      'spambob.org',
464
      'spambog.com',
465
      'spambog.de',
466
      'spambog.net',
467
      'spambog.ru',
468
      'spambox.info',
469
      'spambox.irishspringrealty.com',
470
      'spambox.org',
471
      'spambox.us',
472
      'spamcannon.com',
473
      'spamcannon.net',
474
      'spamcero.com',
475
      'spamcon.org',
476
      'spamcorptastic.com',
477
      'spamcowboy.com',
478
      'spamcowboy.net',
479
      'spamcowboy.org',
480
      'spamday.com',
481
      'spamex.com',
482
      'spamfree.eu',
483
      'spamfree24.com',
484
      'spamfree24.de',
485
      'spamfree24.eu',
486
      'spamfree24.info',
487
      'spamfree24.net',
488
      'spamfree24.org',
489
      'spamgoes.in',
490
      'spamgourmet.com',
491
      'spamgourmet.net',
492
      'spamgourmet.org',
493
      'spamherelots.com',
494
      'spamhereplease.com',
495
      'spamhole.com',
496
      'spamify.com',
497
      'spaminator.de',
498
      'spamkill.info',
499
      'spaml.com',
500
      'spaml.de',
501
      'spammotel.com',
502
      'spamobox.com',
503
      'spamoff.de',
504
      'spamslicer.com',
505
      'spamspot.com',
506
      'spamthis.co.uk',
507
      'spamthisplease.com',
508
      'spamtrail.com',
509
      'speed.1s.fr',
510
      'squizzy.de',
511
      'supergreatmail.com',
512
      'supermailer.jp',
513
      'superrito.com',
514
      'suremail.info',
515
      'tagyourself.com',
516
      'teewars.org',
517
      'teleworm.com',
518
      'teleworm.us',
519
      'tempalias.com',
520
      'tempe-mail.com',
521
      'tempemail.biz',
522
      'tempemail.com',
523
      'tempemail.net',
524
      'tempinbox.co.uk',
525
      'tempinbox.com',
526
      'temp-mail.ru',
527
      'tempmail.it',
528
      'tempmail2.com',
529
      'tempomail.fr',
530
      'temporarily.de',
531
      'temporarioemail.com.br',
532
      'temporaryemail.net',
533
      'temporaryforwarding.com',
534
      'temporaryinbox.com',
535
      'tempymail.com',
536
      'thanksnospam.info',
537
      'thankyou2010.com',
538
      'thisisnotmyrealemail.com',
539
      'throwawayemailaddress.com',
540
      'throam.com',
541
      'tilien.com',
542
      'tmail.com',
543
      'tmailinator.com',
544
      'toiea.com',
545
      'tradermail.info',
546
      'trash-amil.com',
547
      'trash-mail.at',
548
      'trash-mail.com',
549
      'trash-mail.de',
550
      'trash2009.com',
551
      'trashemail.de',
552
      'trashmail.at',
553
      'trashmail.com',
554
      'trashmail.de',
555
      'trashmail.me',
556
      'trashmail.net',
557
      'trashmail.org',
558
      'trashmail.ws',
559
      'trashmailer.com',
560
      'trashymail.com',
561
      'trashymail.net',
562
      'trbvm.com',
563
      'trillianpro.com',
564
      'turual.com',
565
      'twinmail.de',
566
      'tyldd.com',
567
      'uggsrock.com',
568
      'upliftnow.com',
569
      'uplipht.com',
570
      'venompen.com',
571
      'veryrealemail.com',
572
      'vidchart.com',
573
      'viditag.com',
574
      'viewcastmedia.com',
575
      'viewcastmedia.net',
576
      'viewcastmedia.org',
577
      'webm4il.info',
578
      'wegwerfadresse.de',
579
      'wegwerfemail.de',
580
      'wegwerfmail.de',
581
      'wegwerfmail.net',
582
      'wegwerfmail.org',
583
      'wetrainbayarea.com',
584
      'wetrainbayarea.org',
585
      'wh4f.org',
586
      'whatiaas.com',
587
      'whatpaas.com',
588
      'whyspam.me',
589
      'willselfdestruct.com',
590
      'winemaven.info',
591
      'wronghead.com',
592
      'wuzup.net',
593
      'wuzupmail.net',
594
      'www.e4ward.com',
595
      'www.gishpuppy.com',
596
      'www.mailinator.com',
597
      'wwwnew.eu',
598
      'xagloo.co',
599
      'xagloo.com',
600
      'xemaps.com',
601
      'xents.com',
602
      'xmail.com',
603
      'xmaily.com',
604
      'xoxy.net',
605
      'yep.it',
606
      'yogamaven.com',
607
      'yopmail.com',
608
      'yopmail.fr',
609
      'yopmail.net',
610
      'ypmail.webarnak.fr.eu.org',
611
      'yuurok.com',
612
      'zehnminutenmail.de',
613
      'zippymail.info',
614
      'zoaxe.com',
615
      'zoemail.com',
616
      'zoemail.org',
617
  );
618
619
  /**
620
   * @var array
621
   */
622
  public static $domainsTypo = array(
623
      '',
624
      '-online.de',
625
      '-tonline.de',
626
      'acor.de',
627
      'aecor.de',
628
      'ahoo.de',
629
      'al.com',
630
      'ao.com',
631
      'aol.cm',
632
      'aol.con',
633
      'aol.ocm',
634
      'aol.om',
635
      'aoll.com',
636
      'apl.com',
637
      'arco.de',
638
      'arocr.de',
639
      'aror.de',
640
      'feenet.de',
641
      'freeenet.de',
642
      'freeent.de',
643
      'freeet.de',
644
      'freemet.de',
645
      'freeneet.de',
646
      'freent.de',
647
      'frenet.de',
648
      'gm.de',
649
      'gm.net',
650
      'gm.xde',
651
      'gmc.de',
652
      'gmx.ded',
653
      'gmx.dw',
654
      'gmxx.de',
655
      'gmy.de',
656
      'gx.de',
657
      'hmx.de',
658
      'homail.de',
659
      'hotmai.de',
660
      'hotmal.de',
661
      'mx.de',
662
      'mx.net',
663
      'otmail.com',
664
      'r-online.de',
665
      'rcor.de',
666
      'reenet.de',
667
      't--online.de',
668
      't-0nline.de',
669
      't-nline.de',
670
      't-oline.de',
671
      't-omline.de',
672
      't-onine.de',
673
      't-onlien.de',
674
      't-onliine.de',
675
      't-onlin.de',
676
      't-onlinde.de',
677
      't-onlinr.de',
678
      't-onlione.de',
679
      't-onlline.de',
680
      't-onlne.de',
681
      't-onlone.de',
682
      't.-online.de',
683
      't.online.de',
684
      'tonline.de',
685
      'wb.de',
686
      'we.de',
687
      'web.ded',
688
      'web.dw',
689
      'wed.de',
690
      'weeb.de',
691
      'wen.de',
692
      'wweb.de',
693
      'yaho.de',
694
      'yahooo.de',
695
      'yaoo.de',
696
      'yhoo.de',
697
      'yahhoo.de',
698
  );
699
700
  protected static $useDnsCheck = true;
701
702
  /**
703
   * check if the email is valid
704
   *
705
   * @param string     $email
706
   * @param bool|true  $useExampleDomainCheck
707
   * @param bool|true  $useTypoInDomainCheck
708
   * @param bool|true  $useTemporaryDomainCheck
709
   * @param bool|false $useDnsCheck (do not use, if you don't need it)
710
   *
711
   * @return bool
712
   */
713 86
  public static function isValid($email, $useExampleDomainCheck = false, $useTypoInDomainCheck = false, $useTemporaryDomainCheck = false, $useDnsCheck = false)
714
  {
715
    // make sure string length is limited to avoid DOS attacks
716 86
    if (!is_string($email) || strlen($email) >= 320 || strpos($email, ' ') !== false) {
717 17
      return false;
718 70
    } elseif (!preg_match('/^(.*<?)(.*)@(.*)(>?)$/', $email, $parts)) {
719 4
      return false;
720
    } else {
721
722 69
      $localFirst = $parts[1];
723 69
      $localSecond = $parts[2];
724 69
      $domain = $parts[3];
725
726 69
      if (function_exists('idn_to_ascii')) {
727
728 69
        $localFirst = idn_to_ascii($localFirst);
729 69
        $domain = idn_to_ascii($domain);
730
731 69
        if (!$localFirst) {
732 4
          $localFirst = $parts[1];
733 4
        }
734
735 69
      } else {
736
        $punycode = new Punycode();
737
        $localFirst = $punycode->encode($localFirst);
738
        $domain = $punycode->encode($domain);
739
      }
740
741 69
      $email = $localFirst . $localSecond . '@' . $domain . $parts[4];
742
743 69
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
744 52
        return false;
745
      } else {
746 19
        $valid = true;
747
      }
748
749 19
      if ($useExampleDomainCheck === true && self::isExampleDomain($domain) === true) {
750 2
        return false;
751
      }
752
753 19
      if ($useTypoInDomainCheck === true && self::isTypoInDomain($domain) === true) {
754 1
        return false;
755
      }
756
757 19
      if ($useTemporaryDomainCheck === true && self::isTemporaryDomain($domain) === true) {
758
        return false;
759
      }
760
761 19
      if ($useDnsCheck === true && self::isDnsError($domain) === true) {
762
        return false;
763
      }
764
765
    }
766
767
768 19
    return $valid;
769
  }
770
771
  /**
772
   * check if the domain is a example domain
773
   *
774
   * @param string $domain
775
   *
776
   * @return bool
777
   */
778 2
  public static function isExampleDomain($domain)
779
  {
780 2
    if (in_array($domain, self::$domainsExample, true)) {
781 2
      return true;
782
    } else {
783 2
      return false;
784
    }
785
  }
786
787
  /**
788
   * check if the domain has a typo
789
   *
790
   * @param string $domain
791
   *
792
   * @return bool
793
   */
794 3
  public static function isTypoInDomain($domain)
795
  {
796 3
    if (in_array($domain, self::$domainsTypo, true)) {
797 2
      return true;
798
    } else {
799 3
      return false;
800
    }
801
  }
802
803
  /**
804
   * check if the domain is a temporary domain
805
   *
806
   * @param string $domain
807
   *
808
   * @return bool
809
   */
810 3
  public static function isTemporaryDomain($domain)
811
  {
812 3
    if (in_array($domain, self::$domainsTemporary, true)) {
813 1
      return true;
814
    } else {
815 3
      return false;
816
    }
817
  }
818
819
  /**
820
   * check if the domain has a typo
821
   *
822
   * @param string $domain
823
   *
824
   * @return bool|null will return null if we can't use the "checkdnsrr"-function
825
   */
826 2
  public static function isDnsError($domain)
827
  {
828 2
    if (function_exists('checkdnsrr')) {
829 2
      return !checkdnsrr($domain . '.', 'MX') || !checkdnsrr($domain, 'A');
830
    } else {
831
      throw new \Exception(' Can\'t call checkdnsrr');
832
    }
833
  }
834
}
835