কোন অক্ষর একটি ইউআরএল অবৈধ করে?
এই বৈধ URL গুলো কি?
example.com/file[/].html
http://example.com/file[/].html
কোন অক্ষর একটি ইউআরএল অবৈধ করে?
এই বৈধ URL গুলো কি?
example.com/file[/].html
http://example.com/file[/].html
উত্তর:
সাধারণ ইউআরআইতে আরএফসি 3986 দ্বারা সংজ্ঞায়িত হিসাবে ( বিভাগ 2: অক্ষর দেখুন ) নীচের যেকোন 84 টি অক্ষর থাকতে পারে:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=
নোট করুন যে এই তালিকাটিতে ইউআরআইতে এই অক্ষরগুলি কোথায় ঘটতে পারে তা উল্লেখ করে না।
অন্য যে কোনও অক্ষরকে শতাংশ-এনকোডিং ( %
hh
) দিয়ে এনকোড করা দরকার । ইউআরআই-এর প্রতিটি অংশের শতাংশ-এনকোডড শব্দের দ্বারা কোন অক্ষরকে উপস্থাপন করা উচিত তা সম্পর্কে আরও বিধিনিষেধ রয়েছে।
/^([!#$&-;=?-[]_a-z~]|%[0-9a-fA-F]{2})+$/
দেখতে পাওয়া উচিত: এটির জন্য গ্রহণযোগ্য হওয়া উচিত ছিল এমন অন্য কোনও কিছুর উপস্থিতি ছিল? (কেবল স্পষ্ট করে বলতে গেলে, সেই রেজেক্স কেবল সেই স্ট্রিংটিতে বৈধ ইউআরএল অক্ষর রয়েছে কিনা তা পরীক্ষা করে
কিছু স্পষ্টতা যুক্ত করতে এবং উপরের প্রশ্নটি সরাসরি সমাধান করার জন্য, বেশ কয়েকটি শ্রেণীর অক্ষর রয়েছে যা ইউআরএল এবং ইউআরআইয়ের জন্য সমস্যা তৈরি করে।
কিছু অক্ষর রয়েছে যা অনুমোদিত নয় এবং কোনও ইউআরএল / ইউআরআই, সংরক্ষিত অক্ষর (নীচে বর্ণিত) এবং অন্যান্য অক্ষরগুলির ক্ষেত্রে কখনও সমস্যা দেখা দিতে পারে না, তবে "বুদ্ধিমান" বা "অনিরাপদ" হিসাবে চিহ্নিত রয়েছে should অক্ষরগুলিকে কেন বাধা দেওয়া হয়েছে তার ব্যাখ্যাগুলি স্পষ্টভাবে আরএফসি -1738 (ইউআরএল) এবং আরএফসি -2396 (ইউআরআই) এ বর্ণিত । নোট করুন নতুন আরএফসি -3986 (আরএফসি -1738-এ আপডেট হওয়া) একটি নির্দিষ্ট প্রসঙ্গে কোন চরিত্রের অনুমোদিত তা নির্ধারণের সংজ্ঞা দেয় তবে পুরানো অনুমানটি একটি সহজ এবং আরও সাধারণ বিবরণ দেয় যা নিম্নলিখিত নিয়মগুলির সাথে অক্ষরগুলির মঞ্জুরিপ্রাপ্ত নয়।
ইউআরআই সিনট্যাক্সের মধ্যে অনুমোদিত ইউএস-এএসসিআইআই অক্ষরকে বাদ দেওয়া হয়েছে:
control = <US-ASCII coded characters 00-1F and 7F hexadecimal>
space = <US-ASCII coded character 20 hexadecimal>
delims = "<" | ">" | "#" | "%" | <">
"#" অক্ষরটি বাদ দেওয়া হয়েছে কারণ এটি কোনও খণ্ড সনাক্তকারী থেকে একটি ইউআরআই সীমিত করতে ব্যবহৃত হয়। শতাংশ অক্ষর "%" বাদ দেওয়া হয়েছে কারণ এটি পালানো অক্ষরের এনকোডিংয়ের জন্য ব্যবহৃত হয়। অন্য কথায়, "#" এবং "%" সংরক্ষিত অক্ষর যা নির্দিষ্ট প্রসঙ্গে ব্যবহার করা আবশ্যক।
মূর্খ অক্ষরগুলির তালিকা অনুমোদিত কিন্তু সমস্যা হতে পারে:
unwise = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"
এমন একটি অক্ষর যা কোয়েরির উপাদানগুলির মধ্যে সংরক্ষিত থাকে এবং / বা কোনও ইউআরআই / ইউআরএলের মধ্যে বিশেষ অর্থ থাকে:
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
উপরের "সংরক্ষিত" সিনট্যাক্স ক্লাসটি সেই অক্ষরগুলিকে বোঝায় যেগুলি ইউআরআইয়ের মধ্যে অনুমোদিত, তবে জেনেরিক ইউআরআই সিনট্যাক্সের কোনও নির্দিষ্ট উপাদানগুলির মধ্যে অনুমোদিত হতে পারে না। "সংরক্ষিত" সেটের অক্ষরগুলি সমস্ত প্রসঙ্গে সংরক্ষিত নয় । উদাহরণস্বরূপ হোস্টনামে একটি alচ্ছিক ব্যবহারকারীর নাম থাকতে পারে যাতে এটি এমন কিছু হতে পারে ftp://user@hostname/
যেখানে '@' চরিত্রটির বিশেষ অর্থ রয়েছে।
এখানে এমন একটি URL- এর উদাহরণ যা অবৈধ এবং বুদ্ধিমান অক্ষর (যেমন '$', '[', ']') রয়েছে এবং যথাযথভাবে এনকোড করা উচিত:
http://mw1.google.com/mw-earth-vectordb/kml-samples/gp/seattle/gigapxl/$[level]/r$[y]_c$[x].jpg
ইউআরআই / ইউআরএলগুলির জন্য কিছু চরিত্রের সীমাবদ্ধতা হ'ল প্রোগ্রামিং ভাষা নির্ভর। উদাহরণস্বরূপ, '|' (0x7C) চরিত্র যদিও কেবল "অপরিণামদর্শী" কোনো URI বৈশিষ্ট হিসাবে চিহ্নিত একটি নিক্ষেপ করা হবে URISyntaxException জাভা java.net.URI কন্সট্রাকটর তাই একটি URL মত http://api.google.com/q?exp=a|b
অনুমোদিত নয় এবং পরিবর্তে এনকোড করা আবশ্যক http://api.google.com/q?exp=a%7Cb
কোনো URI বস্তুর নিদর্শনের সঙ্গে জাভা ব্যবহার করে।
?
ঠিক আছে তবে এটির আগে অসম্ভব এবং আমি মনে করি না যে @
এই তালিকার কোনওটির মধ্যে রয়েছে। ওহ, এবং %25
শেষ স্ট্রিংয়ের পরিবর্তে , আপনি বোঝাতে চাইছেন না %7C
?
এখানে বেশিরভাগ বিদ্যমান উত্তরগুলি অবাস্তব কারণ তারা ঠিক যেমন বিশ্বের ঠিকানার ব্যবহারগুলিকে অগ্রাহ্য করে:
প্রথমত, পরিভাষায় একটি ডিগ্রেশন। কি হয় এই ঠিকানাগুলি? সেগুলি কি বৈধ ইউআরএল?
.তিহাসিকভাবে, উত্তরটি "না" ছিল। আরএফসি 3986 অনুসারে , 2005 সাল থেকে, এই জাতীয় ঠিকানাগুলি ইউআরআই নয় (এবং ইউআরএল নয়, যেহেতু ইউআরএলগুলি এক প্রকারের ইউআরআই হয় )। ২০০ I আইইটিএফ স্ট্যান্ডার্ডগুলির পরিভাষা অনুযায়ী, আমাদের যথাযথভাবে তাদের আইআরআই (ইন্টারন্যাশনাল রিসোর্স আইডেন্টিফায়ারস) বলা উচিত , যা আরএফসি 3987 - এ সংজ্ঞায়িত করা হয়েছে , যা প্রযুক্তিগতভাবে ইউআরআই নয় তবে কেবল আইআরআই-তে সমস্ত নন-এএসসিআইআই অক্ষরকে শতাংশ-এনকোডিং করে ইউআরআইতে রূপান্তরিত করা যেতে পারে ।
আধুনিক বৈশিষ্ট অনুযায়ী, উত্তর "হ্যাঁ"। WHATWG জীবনযাত্রার মান কেবল সবকিছু যা পূর্বে "URL" হিসাবে "URI উল্লিখিত" বা "Iris" বলা হবে শ্রেণীভুক্ত করে। এটি নির্দিষ্ট করা পরিভাষাটির সাথে একত্রিত করে যে সাধারণ লোকেরা যারা অনুপাতটি পড়ে না তারা "ইউআরএল" শব্দটি কীভাবে ব্যবহার করে, যা এই স্পপের অন্যতম লক্ষ্য ছিল ।
"ইউআরএল" এর এই নতুন অর্থ অনুসারে, কোন অক্ষরের অনুমতি রয়েছে? ইউআরএল এর অনেক অংশে, যেমন ক্যোয়ারী স্ট্রিং এবং পাথ, আমাদেরকে নির্বিচারে "ইউআরএল ইউনিট" ব্যবহার করার অনুমতি দেওয়া হয়েছে যা হ'ল
"ইউআরএল কোড পয়েন্ট" কী?
URL টি কোড পয়েন্ট , হওয়া ASCII আলফানিউমেরিক হয় U + এ 0021 (!), ইউ + + 0024 ($), উ + + 0026 (&), ইউ + + 0027 ( '), উ + + 0028 বাম প্রথম বন্ধনী, U- + + 0029 ডান বন্ধনী, U- + + 002A (*), ইউ + 002 বি (+), ইউ + 002 সি (,), ইউ + 002 ডি (-), ইউ + 002 ই (।), ইউ + 002 এফ (/), ইউ + 003 এ (:), ইউ + 003 বি (;), U + 003D (=), U + 003F (?), U + 0040 (@), U + 005F (_), U + 007E (~), এবং U + 00A0 থেকে U সীমাতে কোড পয়েন্ট + 10 এফএফএফডি, সারোগেটস এবং ননচার্যাক্টর বাদে অন্তর্ভুক্ত।
(নোট করুন যে "ইউআরএল কোড পয়েন্ট" এর তালিকা অন্তর্ভুক্ত নয় %
, তবে সেগুলি %
"ইউআরএল কোড ইউনিটগুলিতে" অনুমোদিত হয় যদি তারা শতাংশ-এনকোডিং ক্রমের অংশ হয়))
একমাত্র জায়গা আমি স্পট করতে পারেন যেখানে বৈশিষ্ট কোন চরিত্র যে ব্যবহার অনুমতি দেয় না এই সেটে রয়েছে হোস্ট , যেখানে IPv6 অ্যাড্রেসের মধ্যে লেখা হয় [
এবং ]
অক্ষর। ইউআরএল এর অন্য কোথাও, হয় ইউআরএল ইউনিট অনুমোদিত বা কিছু এমনকি আরও নিয়ন্ত্রিত অক্ষর সেট।
ইতিহাসের স্বার্থে, এবং যেহেতু এটি এখানে উত্তরগুলিতে অন্য কোথাও পুরোপুরি অন্বেষণ করা হয়নি, আসুন পরীক্ষা করা উচিত চশমাগুলির পুরানো জুটির অধীনে অনুমতি দেওয়া হয়েছিল।
প্রথমত, আমাদের দুটি ধরণের আরএফসি 3986 টি সংরক্ষিত অক্ষর রয়েছে :
:/?#[]@
, যা আরএফসি 3986-এ সংজ্ঞায়িত ইউআরআইয়ের জেনেরিক সিনট্যাক্সের অংশ!$&'()*+,;=
যা আরএফসির জেনেরিক সিনট্যাক্সের অংশ নয়, তবে নির্দিষ্ট ইউআরআই স্কিমগুলির সিনট্যাকটিক উপাদান হিসাবে ব্যবহারের জন্য সংরক্ষিত। উদাহরণস্বরূপ, সেমিকোলন এবং কমা বাক্য গঠন প্রণালী অংশ হিসেবে ব্যবহার করা হয় ডেটা URI উল্লিখিত , এবং &
এবং =
সর্বব্যাপী অংশ হিসেবে ব্যবহার করা হয় ?foo=bar&qux=baz
(যা কোয়েরি স্ট্রিং মধ্যে বিন্যাস করা হয় না বোঝায় যা RFC 3986 দ্বারা নির্দিষ্ট)।উপরের কোনও সংরক্ষিত অক্ষর কোনও ইউআরআইতে এনকোডিং ছাড়াই আইনীভাবে ব্যবহার করা যেতে পারে, হয় তাদের সিন্ট্যাক্টিক উদ্দেশ্যটি পরিবেশন করতে বা এমন কোনও স্থানে ডেটাতে আক্ষরিক চরিত্র হিসাবে যেখানে এই জাতীয় ব্যবহারের চরিত্র হিসাবে এর সিনট্যাক্টিক উদ্দেশ্যটি ভুলভাবে ব্যাখ্যা করা যায় না। (উদাহরণস্বরূপ, যদিও /
ইউআরএলটিতে সিন্ট্যাক্টিক অর্থ রয়েছে, আপনি এটিকে একটি ক্যোয়ারী স্ট্রিং-এ বিনা কোডবিহীনভাবে ব্যবহার করতে পারেন, কারণ এটির প্রশ্নের কোনও স্ট্রিংয়ের অর্থ নেই ))
আরএফসি 3986 কিছু অনারक्षित অক্ষরও নির্দিষ্ট করে , যা সর্বদা কোনও এনকোডিং ছাড়াই ডেটা উপস্থাপনের জন্য ব্যবহার করা যেতে পারে:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~
অবশেষে, %
চরিত্রটি নিজেই শতাংশ-এনকোডিংয়ের জন্য অনুমোদিত।
এটি কেবলমাত্র নিম্নলিখিত ASCII টি অক্ষর ফেলেছে যা ইউআরএল-এ উপস্থিত হওয়া নিষিদ্ধ :
"<>\^`{|}
এএসসিআইআই এর অন্য প্রতিটি চরিত্র আইনত কোনও ইউআরএল-এ ফিচার করতে পারে।
তারপরে আরএফসি 3987 নীচের ইউনিকোড চরিত্রের সীমার সাথে অরক্ষিত অক্ষরের সেটটিকে প্রসারিত করেছে:
%xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF
/ %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD
/ %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD
/ %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD
/ %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD
/ %xD0000-DFFFD / %xE1000-EFFFD
পুরানো স্পেস থেকে এই ব্লক পছন্দগুলি উদ্ভট এবং স্বেচ্ছাসেবী মনে হয় সর্বশেষতম ইউনিকোড ব্লক সংজ্ঞা দেওয়া ; এটি সম্ভবত কারণ আরএফসি 3987 লেখা হওয়ার পরে দশকগুলিতে ব্লকগুলি যুক্ত হয়েছিল।
পরিশেষে, এটি সম্ভবত লক্ষনীয় যে কোনও URL টির মধ্যে কোন অক্ষর আইনীভাবে উপস্থিত হতে পারে তা জানার পক্ষে কিছু দেওয়া স্ট্রিং আইনী URL বা না তা সনাক্ত করার পক্ষে যথেষ্ট নয়, কারণ কিছু অক্ষর কেবলমাত্র URL এর নির্দিষ্ট অংশে বৈধ। উদাহরণস্বরূপ, সংরক্ষিত অক্ষরগুলি [
এবং HTTP: // [1080 :: 8: 800: 200C: 417A] / foo এর]
মতো URL এ আইপিভি 6 আক্ষরিক হোস্টের অংশ হিসাবে আইনী তবে অন্য কোনও প্রসঙ্গে আইনী নয়, তাই ওপির উদাহরণ অবৈধ।http://example.com/file[/].html
আপনার পরিপূরক প্রশ্নে আপনি জিজ্ঞাসা করেছিলেন www.example.com/file[/].html
কোনও বৈধ URL কিনা।
এই ইউআরএলটি বৈধ নয় কারণ একটি URL টি এক প্রকারের ইউআরআই এবং একটি বৈধ ইউআরআইয়ের মতো স্কিম থাকতে হবে http:
(দেখুন আরএফসি 3986 )।
যদি আপনি জিজ্ঞাসা করতে চেয়েছিলেন যে http://www.example.com/file[/].html
কোনও বৈধ URL আছে কিনা তবে উত্তরটি এখনও নেই কারণ বর্গাকার বন্ধনী অক্ষরগুলি বৈধ নয়।
বর্গাকার বন্ধনী অক্ষরগুলি এই ফর্ম্যাটের URL গুলির জন্য সংরক্ষিত রয়েছে: http://[2001:db8:85a3::8a2e:370:7334]/foo/bar
(যেমন একটি হোস্ট নামের পরিবর্তে একটি আইপিভি 6 লিটারাল)
আপনি যদি বিষয়টি পুরোপুরি বুঝতে চান তবে সাবধানে আরএফসি 3986 পড়তে হবে reading
[
এবং ]
প্রায় পারজার আমি দেখেছি জন্য কোনো URI বৈধ নয়। এটি সত্যই আমাকে সত্যিকারের জগতে খারাপ করেছে: stackoverflow.com/questions/11038967/…
Unwise
জন্য খুব গুরুত্ব সহকারে নেবে এবং ইউআরএল লাইব্রেরিগুলির সাথে ঠিক আছে। তা এড়িয়ে যাওয়ার কোনও পতাকা নেই Unwise
। ইউআরএলগুলির জন্য রাস্ট ল্যাং (যেহেতু এটি একটি ব্রাউজারের জন্য তৈরি করা হচ্ছে আমি কৌতূহল তা কী করে তা) যাচাই করতে হবে। বেশিরভাগ ব্রাউজারগুলি সুখে "[", "]" পাশ করে দেবে। তত্ত্বের ক্ষেত্রে যেমন আমি সি / সি ++ দিয়ে বলেছিলাম সেগুলি সাব / সুপার তবে বাস্তবতা এতটা সত্য নয়। এটি সুপার / সাবসেটের স্পেক এবং শব্দার্থবিজ্ঞানের ব্যাখ্যার উপর অত্যন্ত নির্ভরশীল।
সমস্ত বৈধ অক্ষর যা একটি ইউআরআইতে ব্যবহৃত হতে পারে (একটি ইউআরএল এক প্রকারের ইউআরআই ) এটি আরএফসি 3986 - এ সংজ্ঞায়িত করা হয়েছে ।
অন্য সমস্ত অক্ষর একটি ইউআরএল ব্যবহার করা যেতে পারে যে তারা "URL এনকোডেড" প্রথমে রয়েছে। এর মধ্যে নির্দিষ্ট "কোডগুলি" (সাধারণত হেক্সাডেসিমাল সংখ্যার পরে শতকরা প্রতীক (%) আকারে অবৈধ চরিত্রটি পরিবর্তন করা জড়িত।
এই লিঙ্কটি, এইচটিএমএল ইউআরএল এনকোডিং রেফারেন্স , অবৈধ অক্ষরগুলির জন্য এনকোডিংগুলির একটি তালিকা রয়েছে।
ইউনিকোডের বেশ কয়েকটি চরিত্রের ব্যাপ্তি বৈধ এইচটিএমএল 5 , যদিও এটি ব্যবহার করা এখনও তাদের পক্ষে ভাল ধারণা নয়।
উদাহরণস্বরূপ, href
দস্তাবেজগুলি http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :
একটি এবং ক্ষেত্রের উপাদানগুলির মধ্যে href বৈশিষ্ট্যের একটি মান অবশ্যই থাকা উচিত যা স্পেস দ্বারা ঘিরে সম্ভাব্য চারপাশে একটি বৈধ URL।
তারপরে "বৈধ ইউআরএল" এর সংজ্ঞাটি http://url.spec.whatwg.org/ এ নির্দেশ করে , যার মতে এটি লক্ষ্য করে:
সমসাময়িক বাস্তবায়নের সাথে আরএফসি 3986 এবং আরএফসি 3987 সারিবদ্ধ করুন এবং তাদের প্রক্রিয়াটি অপ্রচলিত করুন।
এই দস্তাবেজটি ইউআরএল কোড পয়েন্টগুলি এমনভাবে সংজ্ঞায়িত করে :
ASCII বর্ণমালা, "!", "$", "&", "" "," (",") "," * "," + ",", "-", "।", "/" , ":", ";", "=", "?", "@", "_", "~" এবং কোডগুলি U + 00A0 থেকে U + D7FF, U + E000 থেকে U + FDCF এর মধ্যে রয়েছে , U + FDF0 থেকে U + FFFD, U + 10000 থেকে U + 1FFFD, U + 20000 থেকে U + 2FFFD, U + 30000 থেকে U + 3FFFD, U + 40000 থেকে U + 4FFFD, U + 50000 থেকে U + 5FFFD, U +60000 থেকে U + 6FFFD, U + 70000 থেকে U + 7FFFD, U + 80000 থেকে U + 8FFFD, U + 90000 থেকে U + 9FFFD, U + A0000 থেকে U + AFFFD, U + B0000 থেকে U + BFFFD, U + C0000 U + CFFFD, U + D0000 থেকে U + DFFFD, U + E1000 থেকে U + EFFFD, U + F0000 থেকে U + FFFFD, U + 100000 থেকে U + 10FFFD
"URL টি পয়েন্টগুলি" শব্দটি তখন বিবৃতিতে ব্যবহৃত হয়:
সি যদি কোনও ইউআরএল কোড পয়েন্ট না হয় এবং "%" না হয়, পার্স ত্রুটি।
পার্সিং অ্যালগরিদমের বেশ কয়েকটি অংশে, স্কিমা, কর্তৃপক্ষ, আপেক্ষিক পাথ, ক্যোয়ারী এবং খণ্ড খণ্ডিত বিবরণ সহ: তাই মূলত পুরো URL টি।
এছাড়াও, বৈধকরণকারী http: //) ator.w3.org/ যেমন "你好"
ইউআরএলগুলির জন্য পাস করে, এবং স্পেসগুলির মতো অক্ষরযুক্ত URL গুলির জন্য পাস করে না"a b"
অবশ্যই, স্টিফেন সি দ্বারা উল্লিখিত হিসাবে, এটি কেবল অক্ষর সম্পর্কে নয়, প্রসঙ্গেও: আপনাকে পুরো অ্যালগরিদম বুঝতে হবে। তবে যেহেতু ক্লাস "ইউআরএল কোড পয়েন্ট" অ্যালগরিদমের মূল পয়েন্টগুলিতে ব্যবহৃত হয়, এটি আপনাকে কী ব্যবহার করতে পারে বা কী ব্যবহার করতে পারে সে সম্পর্কে একটি ভাল ধারণা দেয়।
আরও দেখুন: ইউআরএলগুলিতে ইউনিকোডের অক্ষর
ইউআরএলগুলিকে স্ট্রিংয়ে বিভক্ত করতে আমার চরিত্র নির্বাচন করতে হবে, তাই আমি এমন অক্ষরের তালিকা তৈরির সিদ্ধান্ত নিয়েছি যা ইউআরএলটিতে নিজের দ্বারা পাওয়া যায় না:
>>> allowed = "-_.~!*'();:@&=+$,/?%#[]?@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
>>> from string import printable
>>> ''.join(set(printable).difference(set(allowed)))
'`" <\x0b\n\r\x0c\\\t{^}|>'
সুতরাং, সম্ভাব্য পছন্দগুলি হ'ল নিউলাইন, ট্যাব, স্পেস, ব্যাকস্ল্যাশ এবং "<>{}^|
। আমার ধারণা আমি স্থান বা নিউলাইন দিয়ে যাব। :)
আপনার প্রশ্নের উত্তর আসলেই নয় তবে ইউআরএলকে যাচাই করা সত্যিই মারাত্মক পিতা আপনি সম্ভবত ডোমেন নেমটি বৈধতা দেওয়ার চেয়ে আরও ভাল and এটাই আমার অভিজ্ঞতা। আপনি ইউআরএল পিং করার এবং এটির কোনও বৈধ প্রতিক্রিয়ার ফলস্বরূপ দেখতেও অবলম্বন করতে পারেন তবে এমন সাধারণ কাজের জন্য এটি খুব বেশি হতে পারে।
ইউআরএলগুলি সনাক্ত করার জন্য নিয়মিত প্রকাশগুলি প্রচুর পরিমাণে, গুগল করে :)
আমি পুরানো HTTP (0.9, 1.0, 1.1) অনুরোধ এবং প্রতিক্রিয়া পাঠক / লেখক বাস্তবায়ন করছি। অনুরোধ ইউআরআই হ'ল সবচেয়ে সমস্যাযুক্ত জায়গা।
আপনি কেবল আরএফসি 1738, 2396 বা 3986 হিসাবে এটি ব্যবহার করতে পারবেন না। অনেক পুরানো এইচটিটিপি ক্লায়েন্ট এবং সার্ভার রয়েছে যা আরও অক্ষরকে অনুমতি দেয়। সুতরাং আমি দুর্ঘটনাক্রমে প্রকাশিত ওয়েবসারভার অ্যাক্সেস লগগুলির উপর ভিত্তি করে গবেষণা করেছি "GET URI HTTP/1.0" 200
।
আমি খুঁজে পেয়েছি যে নিম্নলিখিত অ-মানক অক্ষরগুলি প্রায়শই ইউআরআইতে ব্যবহৃত হয়:
\ { } < > | ` ^ "
এই অক্ষরগুলি আরএফসি 1738 এ অসুরক্ষিত হিসাবে বর্ণনা করা হয়েছিল ।
আপনি যদি সমস্ত পুরানো HTTP ক্লায়েন্ট এবং সার্ভারের সাথে সামঞ্জস্য রাখতে চান - আপনাকে ইউআরআই অনুরোধে এই অক্ষরগুলি মঞ্জুর করতে হবে ।
এই গবেষণা সম্পর্কে আরও তথ্য পড়ুন দয়া করে http-og ।
আমি পিএইচপি-র জন্য বেশ কয়েকটি নিয়মিত এক্সপ্রেশন নিয়ে এসেছি যা পাঠ্যে url কে অ্যাঙ্কর ট্যাগগুলিতে রূপান্তর করবে। (প্রথমে এটি সমস্ত www। ইউআরএলগুলিকে http: // এ রূপান্তর করে তারপরে https?: // এর মাধ্যমে সমস্ত ইউআরএলকে একটি href = ... এইচটিএমএল লিঙ্কে রূপান্তরিত করে)
$string = preg_replace('/(https?:\/\/)([!#$&-;=?\-\[\]_a-z~%]+)/sim', '<a href="$1$2">$2</a>',
preg_replace('/(\s)((www\.)([!#$&-;=?\-\[\]_a-z~%]+))/sim', '$1http://$2', $string)
);