سایت خود را بسازید ، به روش saalek110

saalek110

Well-Known Member
رگولار اکسپرژن:



برای یادگیری رگولار اکسپرژن بروید اون تاپیک ، در این تاپیک قصد استفاده از اون در سایت را داریم.

اومدیم صفحه 30 تاپیک. 30 ضربدر 20 میشه 600 پست.
انشا الله برسیم به صفحه 100.

در اون تاپیک ، پیدا کردن چیزها را یاد گرفتیم ، ولی چطوری در پست ها اون ها را تغییر دهیم.
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
<?php
$str = 'image22.jpg';
$check = preg_match('/([a-z]+[0-9]*)\.jpe?g$/', $str, $match);
echo $check;
print_r($match);
//echo $match[1];
?>

نقل از تاپیک رگولار اکسپرژن.

نتیجه اجرا:
کد:
1Array ( [0] => image22.jpg [1] => image22 )

خودتان نتیجه را در اینجا ببینید:


من در این تاپیک ، با رگولار اکسپرژن اش کاری ندارم، سوال اینه چطوری روی محتوای پستها اعمالش کنم؟یعنی در کد بالا میگه چنین الگویی وجود دارد ، ولی من چطوری با چیز دیگر در پست جایگزینش کنم؟ مشکل من الان اینه که در پستهای بعدی حلش شده.
 
آخرین ویرایش:

saalek110

Well-Known Member
JavaScript:
<script type="text/javascript">
var str = 'webbbb';
var reg = /^web{1,}$/;
if(reg.test(str)){
    alert('مقادیر معتبر است');
}
else{
    alert('مقادیر معتبر نیست');  
}
</script>

کد بالا ، جاوا اسکریپت است. از همون تاپیک نقل کردم.شاید این پست بی ربط باشد ، رد کنید بروید.
 
آخرین ویرایش:

saalek110

Well-Known Member
اگر از دید php به اون تاپیک رگولار اکسپرژن نگاه کنیم ، از تابع preg_match فقط استفاده شده که یک آرایه میدهد و با print_r چاپش کرده. البته صفحه 4 اش را دارم الان اضافه می کنم، قدیمی ها را میگم.

ولی ما دنبال جایگزینی موارد پیدا شده با چیزهای دیگه هستیم.
 
آخرین ویرایش:

saalek110

Well-Known Member
کاربرد رگولار اکسپرژن در php

preg_replace


PHP:
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "W3Schools", $str);


نتیجه اجرا ببینید:

PHP:
Visit W3Schools!



کد بالا ، هم جایگزین کرده و هم چاپ کرده!
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
    $pattern = "/hello/i";
   $post=preg_replace($pattern, "salam", $post);
                    echo $post;

Screenshot_6.png


در این مثال دنبال الگویی به نام hello گشتیم و با salam جایگزین کردیم.
درسته که hello خیای ساده است ولی به هر حال یک الگو است. با یک مثال ساده اولش شروع کردم تا طرز کار تابع را بفهمیم.

اون حرف i را در صفحه دوم تاپیک رگولار اکسپرژن گفتیم. بهش میگن modifier و وقتی i باشد یعنی بزرگی و کوچکی حروف مهم نیست.
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
    $pattern = "/hello/i";
   $post=preg_replace($pattern, "salam", $post);
   $pattern = "/^https:\/\//";
     $post=preg_replace($pattern,"link---",$post);
                    echo $post;

Screenshot_8.png

توضیح این قسمت:

PHP:
\/\/

چون در رگولار اکسپرژن ممیز معنی خاصی دارد ، اگر بخواهیم بگوییم ممیز در متن ما هست ، قبلش بک اسلش(برعکس ممیز، همون دکمه پاک کردن که در کیبورد کامپویتر بالای دکمه اینتر است) می گذاریم تا معلوم بشه معنی خاص ممیز منظورمان نیست و دنبال خود ممیز هستیم.
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
    $pattern = "/hello/i";
   $post=preg_replace($pattern, "salam", $post);
$pattern = "(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})";
     $post=preg_replace($pattern,"link---",$post);
                    echo $post;

Screenshot_9.png

 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
    $pattern = "/hello/i";
   $post=preg_replace($pattern, "salam", $post);
$pattern = "(https?:\/\/(?:www\.(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,})";
     $post=preg_replace($pattern,"link---",$post);
                    echo $post;

Screenshot_10.png
 

saalek110

Well-Known Member
PHP:
$url = "https://example.com/products.php?category=electronics";
$pattern = "/^(https:\/\/.+\/)([^?]+)(.*)$/";
$replacement = '<a href="$1$2">$2</a>';
$result = preg_replace($pattern, $replacement, $url);
echo $result;

PHP:
<a href="https://example.com/products.php">products.php</a>?category=electronics

فعلا تست نکردم.

 

saalek110

Well-Known Member
PHP:
$m = '|([\w\d]*)\s?(https?://([\d\w\.-]+\.[\w\.]{2,6})[^\s\]\[\<\>]*/?)|i';
$r = '$1 <a href="$2">$3</a>';

$status_text = preg_replace($m,$r,$status_text);
echo $status_text;

 

saalek110

Well-Known Member
PHP:
$string = "http://www.foo.bar/";

PHP:
"#^\w+://(www\.)?\w+\.\w+#i"

پترن بالا را در سایت زیر پیدا کردم:


جالبی اش اینه که قالب را خیلی جامع تعریف کرده ، مثلا www. را اختیاری گرفته. اون علامت سوال بعدش اختیاری اش می کند.
یا مثلا +w یعنی تعدادی حروف. بعلاوه سمت راست دبلیو است.
و این:
PHP:
\w+\.\w+

یعنی تعدادی حروف و بعدش یک نقطه و باز بعدش تعدادی حروف. منظورش همان foo.bar است.

حتی به جای http هم +w گذاشته ، یعنی تعدادی حروف.
 

جدیدترین ارسال ها

بالا