PDA

View Full Version : مشکل با parse_url



king-net
پنج شنبه 03 آذر 1390, 14:00 عصر
درود.
تو این تابع وقتی یک لینکی که توش پارسی نوشته شده رو تجزیه میکنم حرف ف به �_ تبدیل میشه کلی هم گشتم اما درست نشد لطفا از دوستان کسی هست که میتونه کمک کنه ، این لطف رو بکنه

blackmak
پنج شنبه 03 آذر 1390, 18:06 عصر
encoding صفحه رو درست کن :


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

یا encoding رشته رو درست کن:


<?php
$str = 'http://www.site.com/blog/آموزش-بهینه-سازی-وب-سایت-3/';
$str = htmlspecialchars($str, ENT_COMPAT, 'UTF-8');
echo '<pre>';
print_r(parse_url($str));
?>

البته بازم روش واسه تغییر encoding وجود داره

king-net
پنج شنبه 03 آذر 1390, 19:00 عصر
کدی که دادید رو هم گذاشتم اما باز با حرف ف مشکل داره.

blackmak
پنج شنبه 03 آذر 1390, 19:33 عصر
اینو یه نگاه بندازید : با pathinfo , basename ببینید کارتون راه میوفته ؟


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
$str = 'http://www.webtarget.ir/blog/ض-ص-ث-ق-ف-غ-ع-ه-خ-ح-ج-چ-پ-ش-س-ی-ب-ل-ا-ت-ن-م-ک-گ-ظ-ط-ز-ر-ذ-د-ئ-و';
echo '<pre>';
$path0 = parse_url($str);
$path1 = basename($str);
$path2 = pathinfo($str);
print_r($path0).'<br>';
print_r($path2).'<br>';
print_r($path1).'<br>';
?>

king-net
جمعه 04 آذر 1390, 11:01 صبح
سپاس از اینکه پاسگو هستید ولی pathinfo , basename زیاد دقیق نیستن چون من به کل اجزای url نیاز دارم یعنی بخش های scheme , host, patch, fragment حتما باید باشند در کدی هم که گذاشتید همه حرف ها درسته به غیر از ف که �_ نشون میده البته من str_replace هم استفاده کردم بازم نشد اومدم با preg_match تجزیه کنم که میشه scheme رو گرفت اما host رو خیلی باید کدنویسی کنی اونم معلوم نیست نتیجه بده یا نه .

blackmak
جمعه 04 آذر 1390, 14:52 عصر
من علاوه بر ف روی ح هم مشکل داشتم واسه همین یه چیزی نوشتم خودم که جواب میده. تو نت نبود چون چیزه فارسی پیدا نمیشه راجع با این چیزا. خارجی هم که اصلا ف ندارن :لبخند:


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
$str = 'http://www.webtarget.ir/blog/siamak.php?siamak=ض-ص-ث-ق-ف-غ-ع-ه-خ-ح-ج-چ-پ-ش-س-ی-ب-ل-ا-ت-ن-م-ک-گ-ظ-ط-ز-ر-ذ-د-ئ-و';
$str = str_replace('ف','F1601F',$str);
$str = str_replace('ح','H1581H',$str);
echo '<pre>';
$path = parse_url($str);
$path_str = implode('|Fsep#sepF|',$path);
$path_str = str_replace('F1601F','ف',$path_str);
$path_str = str_replace('H1581H','ح',$path_str);
$pars_url = explode('|Fsep#sepF|',$path_str);
print_r($pars_url);
?>

موفق باشی

king-net
جمعه 04 آذر 1390, 15:57 عصر
خیلی مردی :لبخند: دو روز توش بودم :گیج: الانم دارم به یک فانکشن تبدیلش میکنم تا به جای parse_url استفاده کنم .

blackmak
جمعه 04 آذر 1390, 17:35 عصر
چارتیم :چشمک: فانکشنش کردی بذار همینجا همه استفاده کنن :لبخند:

hrs2010
پنج شنبه 22 آبان 1393, 22:23 عصر
درود.
تو این تابع وقتی یک لینکی که توش پارسی نوشته شده رو تجزیه میکنم حرف ف به �_ تبدیل میشه کلی هم گشتم اما درست نشد لطفا از دوستان کسی هست که میتونه کمک کنه ، این لطف رو بکنه



-------------------------------------------------------------------

hrs2010
پنج شنبه 22 آبان 1393, 22:28 عصر
به نام خدا

با سلام و احترام
لطفا تابع زیر را استفاده نمایید. در پناه حق تعالی موفق باشید.

function mb_parse_url($url)
{
$enc_url = preg_replace_callback(
'%[^:/@?&=#]+%usD',
create_function ('$matches','
return urlencode($matches[0]);
'),
$url
);

$parts = parse_url($enc_url);

if($parts === false)
{
throw new InvalidArgumentException('Malformed URL: ' . $url);
}

foreach($parts as $name => $value)
{
$parts[$name] = urldecode($value);
}

return $parts;
}