Completed
Push — master ( 71997f...2bccb6 )
by Lars
03:27
created

EmailCheck::isValid()   C

Complexity

Conditions 16
Paths 23

Size

Total Lines 61
Code Lines 34

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 29
CRAP Score 16.8148

Importance

Changes 6
Bugs 0 Features 1
Metric Value
c 6
b 0
f 1
dl 0
loc 61
ccs 29
cts 34
cp 0.8529
rs 6.2087
cc 16
eloc 34
nc 23
nop 5
crap 16.8148

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) {
762 1
        $dnsCheck = self::isDnsError($domain);
763
764 1
        if ($dnsCheck !== null) {
765 1
          return (boolean) $dnsCheck;
766
        }
767
      }
768
769
    }
770
771
772 18
    return $valid;
773
  }
774
775
  /**
776
   * check if the domain is a example domain
777
   *
778
   * @param string $domain
779
   *
780
   * @return bool
781
   */
782 2
  public static function isExampleDomain($domain)
783
  {
784 2
    if (in_array($domain, self::$domainsExample, true)) {
785 2
      return true;
786
    } else {
787 2
      return false;
788
    }
789
  }
790
791
  /**
792
   * check if the domain has a typo
793
   *
794
   * @param string $domain
795
   *
796
   * @return bool
797
   */
798 3
  public static function isTypoInDomain($domain)
799
  {
800 3
    if (in_array($domain, self::$domainsTypo, true)) {
801 2
      return true;
802
    } else {
803 3
      return false;
804
    }
805
  }
806
807
  /**
808
   * check if the domain is a temporary domain
809
   *
810
   * @param string $domain
811
   *
812
   * @return bool
813
   */
814 3
  public static function isTemporaryDomain($domain)
815
  {
816 3
    if (in_array($domain, self::$domainsTemporary, true)) {
817 1
      return true;
818
    } else {
819 3
      return false;
820
    }
821
  }
822
823
  /**
824
   * check if the domain has a typo
825
   *
826
   * @param string $domain
827
   *
828
   * @return bool|null will return null if we can't use the "checkdnsrr"-function
829
   */
830 2
  public static function isDnsError($domain)
831
  {
832 2
    if (function_exists('checkdnsrr')) {
833 2
      return !checkdnsrr($domain . '.', 'MX') || !checkdnsrr($domain, 'A');
834
    } else {
835
      return null;
836
    }
837
  }
838
}
839