eregi() ครับ

เริ่มโดย absolutex, 18 กันยายน 2008, 20:30:27

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

absolutex

พี่ครับ ถ้าเรา check

อ้างถึงif ( strlen( $email) == 0 )
      {
         $error_email = '<font class="error">กรุณากรอกอีเมล์</font>';
         $error = true;
      }
      else if ( !eregi("^.+@.+\..+$", $email) )
      {
         $error_email = '<font class="error">อีเมล์ไม่ถูกต้อง</font>';
         $error = true;
      }

แล้วถ้าเราจะ check website ให้ตรงตาม domain เราเช่น  ชื่ออะไรก้ได้อังกิดกับตัวเลข.xxx.com

.xxx.com อันนี้จำเป็นต้องมีอะครับ แก้ยังไงดีครับพี่ๆ

Kazamatsuri


^[a-z0-9]+\.xxx\.com$


eregi มัน case-insensitive ป่ะ :P

ball6847

น่าจะตามอันบนนี่แหละคับ แต่ น่าจะเปลี่ยนนิดหน่อย โดยเปลี่ยนมาใช้ preg_match ดีกว่า ความรู้สึกส่วนตัว(และจากการทดลอง) มันเร็วกว่านะ

<?php

preg_match
("|^[a-z0-9]+\.xxx\.com$|" $text);

?>


ถ้าต้องการเช็คแบบ case insensitive ก็

<?php

preg_match
("|^[a-z0-9]+\.xxx\.com$|i" $text);

?>


แต่ผมงงอ่ะ ตาม โค้ดที่มานี่เช็คอีเมลล์ไม่ใช่หรอ

ถ้างั้นก็แบบนี้

<?php

preg_match
("|^[a-z0-9]+@xxx\.com$|i" $email);

?>



งงป่ะ ผมยังงงเลย ตอบไปมั่วๆ 555+
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

absolutex

ขอบคุณคร๊าฟฟฟฟฟฟ  :'(

Kazamatsuri

ไม่รู้อ่ะ เค้าบอกชื่อเวบไซต์ผมก็เลยจัดไปแค่นั้น :-[

EThaiZone

บอกเป็นความรู้นิดๆ

อีเมล์ต้องขึ้นต้นด้วยตัวอักษร ห้ามตัวเลขนะครับ ดังนั้นเวลาเขียนเช็คต้องเป็น

preg_match("|^[a-z][a-z0-9]+@xxx\.com$|i" , $email);

:)

absolutex

else if ( !eregi("^.+\.xxx\.com$", $website) ) {
$error = '<font class="error"> ไม่ถูกต้อง !</font>';



แล้วถ้าคนใส่ มี http:// มาด้วย ทำไงดีครับ ให้ขึ้น "ไม่ถูกต้อง" เหมือนกันอะครับ

ไม่ต้องการให้มี http:// เลยครับ ใช้แทรกเข้าไปยังไงดีครับ

สามารถแทรกให้อยู่ใน บรรทัด ( !eregi("^.+\.xxx\.com$", $website) )  นี้ได้รึป่าวครับ  :P

ขอบคุณครับผม

kengz

คือผมเขียน perl มาก่อนนะครับ ผมจึงใช้ preg_match
วิธีการ check   *.domain.com ให้ทำแบบนี้ครับ

if(preg_match("/^[A-Za-z0-9](-?[0-9a-zA-Z]+)*\.xxx\.com$/",$string))
{
   // match
}

ชื่อ sub domain จะเป็นอะไรก็ได้ ตัวเลข ตัวอักษร และ ขีด ซึ่งตัวแรกและตัวสุดท้ายต้องไม่ใช่ขีด
ซึ่งแบบนี้ หากป้อน http:// มาด้วย ก็จะไม่ match นะครับ

หากมีข้อสงสัยเกี่ยวกับ regular express ถามได้ฮะ

อ้างถึงบอกเป็นความรู้นิดๆ

อีเมล์ต้องขึ้นต้นด้วยตัวอักษร ห้ามตัวเลขนะครับ ดังนั้นเวลาเขียนเช็คต้องเป็น

โค๊ด:
preg_match("|^[a-z][a-z0-9]+@xxx\.com$|i" , $email);


เสริมครับ email ไม่จำเป็นต้องขึ้นต้นด้วยตัวอักษรครับ
ขึ้นต้นด้วยตัวเลข และ อักขระ  !#$%&'*+-/=?^_`.{|}~ ได้ครับ
แต่ห้ามลงท้ายด้วย . เช่น [email protected]

absolutex

#8
อ้างถึงจาก: kengz ใน 28 กันยายน 2008, 21:38:25
คือผมเขียน perl มาก่อนนะครับ ผมจึงใช้ preg_match
วิธีการ check   *.domain.com ให้ทำแบบนี้ครับ

if(preg_match("/^[A-Za-z0-9](-?[0-9a-zA-Z]+)*\.xxx\.com$/",$string))
{
   // match
}

ชื่อ sub domain จะเป็นอะไรก็ได้ ตัวเลข ตัวอักษร และ ขีด ซึ่งตัวแรกและตัวสุดท้ายต้องไม่ใช่ขีด
ซึ่งแบบนี้ หากป้อน http:// มาด้วย ก็จะไม่ match นะครับ

หากมีข้อสงสัยเกี่ยวกับ regular express ถามได้ฮะ

แล้วถ้าตัวแรกและท้ายมีขีดได้ด้วยอะครับ ^^'


kengz

อ้างถึงจาก: absolutex ใน 28 กันยายน 2008, 21:52:15
อ้างถึงจาก: kengz ใน 28 กันยายน 2008, 21:38:25
คือผมเขียน perl มาก่อนนะครับ ผมจึงใช้ preg_match
วิธีการ check   *.domain.com ให้ทำแบบนี้ครับ

if(preg_match("/^[A-Za-z0-9](-?[0-9a-zA-Z]+)*\.xxx\.com$/",$string))
{
   // match
}

ชื่อ sub domain จะเป็นอะไรก็ได้ ตัวเลข ตัวอักษร และ ขีด ซึ่งตัวแรกและตัวสุดท้ายต้องไม่ใช่ขีด
ซึ่งแบบนี้ หากป้อน http:// มาด้วย ก็จะไม่ match นะครับ

หากมีข้อสงสัยเกี่ยวกับ regular express ถามได้ฮะ

แล้วถ้าตัวแรกและท้ายมีขีดได้ด้วยอะครับ ^^'




จัดไปครับ
if(preg_match("/^[A-Za-z0-9\-]+\.xxx\.com$/",$string))
{
   // match
}