عبارات با قائده ابزار خیلی مفیدی برای توسعه دهنده گان هستند. این عبارات به شما اجازه میده تا متن مدنظر یا کلمه و یا هر کاراکتری که مد نظر شماست رو از داخل متن اصلی پیدا کنین. تو این مطلب ۱۳ عبارت با قائده که مفید و کاربردی هستند رو برای توسعه دهنده های پی اچ پی معرفی میکنم.
بررسی صحت آدرس IP
برای بررسی صحت آی پی از کد زیر میشه استفاده کرد:
if(preg_match('/^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))*$/', $ip)){
echo 'ip is valid';
}else{
echo 'ip is not valid'
}
بررسی صحت ایمیل
اینم یه کد برای اینکه بفهمیم ایمیل معتبر هست یا نه:
<?php
$pattern = '/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD';
$emailaddress = 'test@gmail.com';
if (preg_match($pattern, $emailaddress) === 1) {
// emailaddress is valid
}
بررسی اعتبار نام دامنه
این کد صحت نام دامنه رو بررسی میکنه:
$url = "http://komunitasweb.com/";
if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i', $url)) {
echo "Your url is ok.";
} else {
echo "Wrong url.";
}
برجسته کردن کلمه داخل متن
این مدل خیلی مفیده که یه واژه از متن رو پیدا کنین و برجسته یا highlight کنین. مخصوصا تو نتیجه جستجو خیلی کاربرد داره:
$text = "Sample sentence from KomunitasWeb, regex has become popular in web programming. Now we learn regex. According to wikipedia, Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor";
$text = preg_replace("/b(regex)b/i", '<span style="background:#5fc9f6">1</span>', $text);
echo $text;
برجسته کردن یا هایلایت کردن نتیجه جستجو در وردپرس
همونطور که تو مورد قبل گفتم میتونیم نتایج جستجو رو برجسته کنیم و مخصوصا در وردپرس این مار خیلی مفیده. فایل search.php
رو باز کنین و تابع the_title()
رو پیدا کنین و با کد زیر جایگزینش کنین:
echo $title;
حالا قبل از خط ویرایش شده کد زیر رو اضافه کنین:
<?php
$title = get_the_title();
$keys= explode(" ",$s);
$title = preg_replace('/('.implode('|', $keys) .')/iu',
'<strong class="search-excerpt">\0</strong>',
$title);
?>
فایل search.php رو ذخیره کنین و داخل فایل style.css کد زیر رو اضافه کنین:
strong.search-excerpt { background: yellow; }
گرفتن تمام تصاویر از سند html
اگه میخواین براحتی تمام تصاویر یه سند html رو پیداکنین از کد زیر استفاده کنین. اینطور کدها مخصوصا برای نوشتن یه اسکریپت مبتنی بر cURL خیلی عالیه:
$images = array();
preg_match_all('/(img|src)=("|')[^"'>]+/i', $data, $media);
unset($data);
$data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3",$media[0]);
foreach($data as $url)
{
$info = pathinfo($url);
if (isset($info['extension']))
{
if (($info['extension'] == 'jpg') ||
($info['extension'] == 'jpeg') ||
($info['extension'] == 'gif') ||
($info['extension'] == 'png'))
array_push($images, $url);
}
}
حذف کلمات تکراری
بعضی وقت ها ممکنه کلمات تکراری تو تایپ نوشته بشه که با کد زیر میشه حذفشون کرد:
$text = preg_replace("/s(w+s)1/i", "$1", $text);
وردپرس: گرفتن تمام تصاویر از پست وردپرس
ممکنه بخواین تمام تصاویر رو اط مطلب وردپرس استخراج کنین که کد جالبیه. خب میتونین از کد زیر تو پوسته استفاده کنین:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$szPostContent = $post->post_content;
$szSearchPattern = '~<img [^>]* />~';
// Run preg_match_all to grab all the images and save the results in $aPics
preg_match_all( $szSearchPattern, $szPostContent, $aPics );
// Check to see if we have at least 1 image
$iNumberOfPics = count($aPics[0]);
if ( $iNumberOfPics > 0 ) {
// Now here you would do whatever you need to do with the images
// For this example the images are just displayed
for ( $i=0; $i < $iNumberOfPics ; $i++ ) {
echo $aPics[0][$i];
};
};
endwhile;
endif;
?>
بررسی پیچیدگی گذرواژه یا پسورد
برای امنیت پسوردی که حداقل ۶ کاراکتر داشته باشه، از عدد، خط وزیر خط داخلش استفاده بشه و حد افل یه حرف بزرگ داشته باشه از کد زیر استفاده کنین:
'A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}z'
پیدا کردن عنوان صفحه
این کد میره مقدار تگ title رو از صفحه مدنظر میگیره:
$fp = fopen("http://www.catswhocode.com/blog","r");
while (!feof($fp) ){
$page .= fgets($fp, 4096);
}
$titre = eregi("<title>(.*)</title>",$page,$regs);
echo $regs[1];
fclose($fp);
بررسی مقدار کد رنگ هگزادسیمال
به عنوان توسعه دهدنه وب ممکنه بخواین کد رنگی که کاربر وارد میکنه رو صحتشو بررسی کنین:
$string = "#555555";
if (preg_match('/^#(?:(?:[a-fd]{3}){1,2})$/i', $string)) {
echo "example 6 successful.";
}
پیدا کردن تگ html یا xml با ویژگی یا attribute خاص
اگه بخواین یه تگ رو که ویژگی یا attribute خاص رو رو از سند html یا xml پیدا کنین مثل <div id=”header”>
از کد زیر کمک بگیرین:
function get_tag( $attr, $value, $xml, $tag=null ) {
if( is_null($tag) )
$tag = '\w+';
else
$tag = preg_quote($tag);
$attr = preg_quote($attr);
$value = preg_quote($value);
$tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*".
"(['\"])$value\\2[^>]*>(.*?)<\/\\1>/"
preg_match_all($tag_regex,
$xml,
$matches,
PREG_PATTERN_ORDER);
return $matches[3];
}
پیدا کردن یک تگ html یا xml
برای پیدا کردن یک یک تگ html یا xml از کد زیر استفاده کنین. استفاده این کد بیشتر برای نوشتن اسکریپت مبتنی بر cURL کاربرد داره:
function get_tag( $tag, $xml ) {
$tag = preg_quote($tag);
preg_match_all('{<'.$tag.'[^>]*>(.*?)</'.$tag.'>.'}',
$xml,
$matches,
PREG_PATTERN_ORDER);
return $matches[1];
}
آدرس منبع با کمی تغییر