PDA

View Full Version : سوال: بررسی وجود یک تگ داخل یک رشته



ravand
دوشنبه 10 آذر 1393, 10:13 صبح
سلام
من دارم اسکریپت یه سرویس وبلاگی رو ویرایش میکنم. میخوام دستوری بنویسم که بگه: اگه این تگ بلاگفا داخل این رشته نست اخطار بده

<form method="post">
<textarea name="tag"></textarea>
<input type="submit" name="sub" value="ارسال">
</form>



<?php
if(isset($_POST['sub'])){
$karbari=$_POST['tag'];
$findme = '<BLOGFA>';
$pos = strpos($karbari, $findme);
if ($pos === false) {
die('<span style="color:red;">این قالب بلاگفا نیست</span>');
exit;
}
}
?>

توی سیستمم و با برنامه xampp درست کار میکنه حتی روی سایت خودم هم درست کار میکنه. ولی وقتی توی اون سرویس وبلاگی قرار میدم. مشکل داره.
وقتی امدم کدهای php رو اینطوری نوشتم کار میکنه:

<?php
if(isset($_POST['sub'])){
$karbari=$_POST['tag'];
$findme = 'BLOGFA';
$pos = strpos($karbari, $findme);
if ($pos === false) {
die('<span style="color:red;">این قالب بلاگفا نیست</span>');
exit;
}
}
?>


یعنی اگر من بیام و بنویسم BLOGFA مشکلی نداره. ولی برای کد قبلی اگه به صورت تگ می نوشتم مشکل داشت.
متشکرم.

phpdev
دوشنبه 10 آذر 1393, 10:54 صبح
یک با از بک اسلش استفاده کن اگه نشد اینم امتحان کن &gt; و &ls;

ravand
دوشنبه 10 آذر 1393, 10:58 صبح
از این روش ها استفاده کردم فایده ای نداشت:


$tcode = str_replace(array('"','\\'), '',$tcode);
$tcode = str_replace('&lt;', '<',$tcode);

$tcode = str_replace('&gt;', '>',$tcode);

php_zone
دوشنبه 10 آذر 1393, 18:35 عصر
از finder های عبارات با قاعده استفاده کنید !

ravand
دوشنبه 10 آذر 1393, 19:00 عصر
از finder های عبارات با قاعده استفاده کنید !
من اگه بلد بودم که سوال نمی کردم. :لبخند:
شما یه مثال ساده ازش ندارید؟

ashkufaraz
دوشنبه 10 آذر 1393, 20:21 عصر
$html = file_get_html('http://www.google.com/');

// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';

// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';


یه نگاه به این php html dom بنداز شاید به دردت بخوره

ravand
دوشنبه 10 آذر 1393, 21:08 عصر
ممنون ولی من مقدار رو قراره از textarea بگیرم نه از فایل.
الان مشکل من این علامت های بزرگتر و کوچکتر هتست <> اینا باعث شده تگ زیر شناخته نشه.

<BLOHGFA>

ravand
سه شنبه 11 آذر 1393, 09:54 صبح
امدم توی یه فایل دیگه از سایت این کد رو امتحان کردم دیدم هیچ مشکلی نداره فقط اون فایلی که اون برنامه نویس قبلی نوشته این مشکل رو داره هر چی دقت کردم دیدم کدی نیست که باعث ایجاد این مشکل شده باشه نمی فهمم مشکل از کجاست!


<?php
if(isset($_POST['sub'])){
$karbari=$_POST['tag'];
$findme = '<BLOGFA>';
$pos = strpos($karbari, $findme);
if ($pos === false) {
die('<span style="color:red;">این قالب بلاگفا نیست</span>');
exit;
}
}
?

arta.nasiri
سه شنبه 11 آذر 1393, 11:41 صبح
<?php
if (isset($_POST['sub']))
{
$karbari = $_POST['tag'];
if (!preg_match('/\<blogfa\>/im', $karbari))
{
die('<span style="color:red;">این قالب بلاگفا نیست</span>');
exit;
}
}

ravand
سه شنبه 11 آذر 1393, 12:24 عصر
اینم مشکل رو حل نکرد.
مشکل از یه کدی هست در برنامه که مانع میشه تگ بلاگفا دریافت بشه.

arta.nasiri
سه شنبه 11 آذر 1393, 15:25 عصر
خب شما مقدار $_POST['tag'] رو بررسی کنید، شاید تو کدهاتون یجایی مقدارش دستکاری یا encode میشه

ravand
سه شنبه 11 آذر 1393, 15:52 عصر
خب شما مقدار $_POST['tag'] رو بررسی کنید، شاید تو کدهاتون یجایی مقدارش دستکاری یا encode میشه
این کارایی که میگید رو قبلاً کردم. وقتی از دستورvar_dump استفاده کردم مطالب زیر رو بهم داد:

string(25) "&lt;MELATBLOG&gt;"
با echo هم که همینو:

&lt;MELATBLOG&gt;
با تابع str_replace هم که کار کردیم فایده ای نداشت.
نمی فهمم مشکل چیه؟

arta.nasiri
سه شنبه 11 آذر 1393, 16:56 عصر
این کارایی که میگید رو قبلاً کردم. وقتی از دستورvar_dump استفاده کردم مطالب زیر رو بهم داد:

string(25) "&lt;MELATBLOG&gt;"
با echo هم که همینو:

&lt;MELATBLOG&gt;
با تابع str_replace هم که کار کردیم فایده ای نداشت.
نمی فهمم مشکل چیه؟

به اینصورت هم کار نکرد؟ html_entity_decode


<?php
if (isset($_POST['sub']))
{
$karbari = html_entity_decode($_POST['tag']);
if (!preg_match('/\<blogfa\>/im', $karbari))
{
die('<span style="color:red;">این قالب بلاگفا نیست</span>');
exit;
}}

ravand
سه شنبه 11 آذر 1393, 17:16 عصر
وقتی این تابع html_entity_decode رو اضافه میکنم تگ بلاگفا رو درست نشون میده و مثل قبل نیست .ولی هنوزم مشکل برنامه حل نشده!

arta.nasiri
سه شنبه 11 آذر 1393, 17:33 عصر
وقتی این تابع html_entity_decode رو اضافه میکنم تگ بلاگفا رو درست نشون میده و مثل قبل نیست .ولی هنوزم مشکل برنامه حل نشده!

مقدار $_POST['tag'] بصورت کامل اینجا قرار بدید لطفا

ravand
سه شنبه 11 آذر 1393, 17:48 عصر
همونطوری که بهتون گفتم. این مقدار رو میده:

&lt;MELATBLOG&gt;
من خودم هم متعجبم!

php_zone
چهارشنبه 12 آذر 1393, 11:09 صبح
من اگه بلد بودم که سوال نمی کردم. :لبخند:
شما یه مثال ساده ازش ندارید؟

اونقدر توی گوگل هست که فقط کافی اصول سرچ گوگلی رو یاد داشته باشی :لبخند:

ravand
چهارشنبه 12 آذر 1393, 11:23 صبح
اونقدر توی گوگل هست که فقط کافی اصول سرچ گوگلی رو یاد داشته باشی
مشکل اینا نیست برادر!
مشکل یه علت نامعلومی هست! که من واقعاً توش موندم :لبخند:

bagherok
پنج شنبه 13 آذر 1393, 11:41 صبح
اینو هم تست کن

echo bin2hex($_POST['tag']);
echo bin2hex("<BLOGFA>");

abolfazl-z
پنج شنبه 13 آذر 1393, 22:51 عصر
سلام
من دارم اسکریپت یه سرویس وبلاگی رو ویرایش میکنم. میخوام دستوری بنویسم که بگه: اگه این تگ بلاگفا داخل این رشته نست اخطار بده

<form method="post">
<textarea name="tag"></textarea>
<input type="submit" name="sub" value="ارسال">
</form>



<?php
if(isset($_POST['sub'])){
$karbari=$_POST['tag'];
$findme = '<BLOGFA>';
$pos = strpos($karbari, $findme);
if ($pos === false) {
die('<span style="color:red;">این قالب بلاگفا نیست</span>');
exit;
}
}
?>

توی سیستمم و با برنامه xampp درست کار میکنه حتی روی سایت خودم هم درست کار میکنه. ولی وقتی توی اون سرویس وبلاگی قرار میدم. مشکل داره.
وقتی امدم کدهای php رو اینطوری نوشتم کار میکنه:

<?php
if(isset($_POST['sub'])){
$karbari=$_POST['tag'];
$findme = 'BLOGFA';
$pos = strpos($karbari, $findme);
if ($pos === false) {
die('<span style="color:red;">این قالب بلاگفا نیست</span>');
exit;
}
}
?>


یعنی اگر من بیام و بنویسم BLOGFA مشکلی نداره. ولی برای کد قبلی اگه به صورت تگ می نوشتم مشکل داشت.
متشکرم.

فکر کنم خطای شما از نوع خطای منطقی است !

در خط ذیل


$pos = strpos($karbari, $findme);

خروجی تابع و متغیر های $karbari و $findme را در یک فایل متنی ذخیره کنید و نتیجه را در اینجا بگذارید (مانند ذیل)


$karbari

_______________________

$findme

_____________________

strpos($karbari, $findme)