• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چطوری کاراکتر "&" را انکد کنم؟
#1
سلام،
من الان به مشکلی بر خوردم که هرچقدر سعی کردم برطرفش کنم نشد. راه های مختلف رو میرم اما جواب نمیده.
در آدرس ها میخوام کاراکتر & رو انکد کنم. چون وقتی انکد نشه انگار آیدی تفسیر میشه که مقدار داره و با GET میشه مقدارشو خوند. از توابع مختلفی استفاده کردم و حتی خودم تابع جداگانه ای نوشتم ولی عملی نشدند هیچکدومشون.
urlencode()
rawurlencode()
این تابع هارو امتحان کردم.

چیکار کنم؟ Huh
غایب
  پاسخ
تشکر شده توسط :
#2
دقیقا بگو چی رو می خوایی encode کنی . چون همونجوذ که خودتم گفتی با اون دو تا تابع این کار رو میکنن

از این تابع هم میتونی استفاده کنی
http://www.php.net/manual/en/function.ht...lchars.php
  پاسخ
تشکر شده توسط :
#3
این هم قبلاً امتحان کرده بودم اما یادم رفت بنویسمش. نه بازم همونه. تو برنامه من اینطوری اگر آدرس بدی:
کد:
x.com/alireza/song-&y.html
وقتی بخوای دومین قسمت آدرس یعنی song-&y رو بخونی همونطور که قبلاً هم گفتم ، فقط می نویسه song- ! نمیدونم چرا
غایب
  پاسخ
تشکر شده توسط :
#4
کدی که برای generate کردن این لینک نوشتی رو هم اگه میتونی بزار.
  پاسخ
تشکر شده توسط :
#5
ناصر جان یواش یواش داره بوش در میاد Big Grin وقتی بطور عادی (بدون rewriterule) وارد می کنم آدرس رو مشکلی نیست وقتی اون کاراکتر انکد بشه که میشه ولی وقتی با rewriterule میخوام اینکارو کنم مشکل پیش میاد. دستور من اینه:
کد:
RewriteRule ^lyric/([0-9]+)/(\S+)/(\S+)\.html$ showtime.php?id=$1&artist=$2&song=$3&what=lyric [L]
همه چیش کار می کنه ولی این کاراکتر و احتمالاً کاراکتر "؟" چون خاص هستند مشکل ساز میشن.
باید یه جوری اسکیپ کنم هر کاراکتر تو دستور رو. Dodgy
غایب
  پاسخ
تشکر شده توسط :
#6
خب بحث اسکیپش هم درست شده. در آدرس تمام & ها به %26 تبدیل میشن و در جایی خارج برنامه ازش استفاده می کنم درست می کنه بعلاوه بدون Rewriterule در داخل برنامه اما در داخل برنامه اگر از rewriterule استفاده کنم انکد میشه با اینکه اسکیپ هم می کنم اما جواب نمیده.
این چیزیه که من انجام میدم:
کد پی‌اچ‌پی:
EscapeQuotes$fil_addr->retDefualtChars(urldecode(($_GET['artist']) ))) 

EscapeQuotes:
کد پی‌اچ‌پی:
function EscapeQuotes$string ) {

$conn = new ConnectToDatabase();

if( 
get_magic_quotes_gpc() ) {
return 
$string;
}
else {
if( 
function_exists('addslashes') ) {
return 
addslashes$string );
}
else {
return 
mysqli_real_escape_string$conn->connect$string );
}
}


fil_addr:
کد پی‌اچ‌پی:
final class setPersianAddr {
    
    public function 
retDefualtChars$url ) {
        
$standards = array( ' ' );
        
$non_standards = array( '-' );
        
$url str_replace$non_standards$standards$url );
        return 
$url;
    }
    } 

جایی هم که بخوایم به حالت اول برگردونم urlencode رو به urldecode عوض می کنم.
غایب
  پاسخ
تشکر شده توسط :
#7
مشکل درست بشو نیست. کسی نیست بدونه چطوری حلش باید کرد؟
غایب
  پاسخ
تشکر شده توسط :
#8
20 و خورده ای نفر این تاپیک رو دیدن کسی هنوز نفهمیده چطوری باید درستش کنم؟ Dodgy
غایب
  پاسخ
تشکر شده توسط :
#9
اولین راه حل اینه که بیخیال این کاراکتر بشی!
دومین راه حل هم اینه که از یه کاراکتر جای گزین یا دکد استفاده کنی ( اینم نمیشه پس باید از راه حل اول استفاده کنی! )
  پاسخ
تشکر شده توسط :
#10
من واسه حل این مشکل کلا اومدم این سری کاراکترهای رو replace کردم مثلا با _
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان