আপনি strtok
প্রথম ঘটনার আগে স্ট্রিং পেতে ব্যবহার করতে পারেন?
$url = strtok($_SERVER["REQUEST_URI"], '?');
strtok()
ক্যোরিস্ট্রিংয়ের আগে সরাসরি ?
স্ট্রিংগুলি বের করার জন্য সর্বাধিক সংক্ষিপ্ত কৌশলটি উপস্থাপন করে । explode()
কম সরাসরি কারণ এটি অবশ্যই একটি সম্ভাব্য দ্বি-উপাদান অ্যারে তৈরি করতে পারে যার মাধ্যমে প্রথম উপাদানটি অ্যাক্সেস করতে হবে।
যখন ইউআরএলটিতে ক্যোরিস্ট্রিং অনুপস্থিত বা সম্ভাব্যভাবে অন্যান্য / অযৌক্তিক সাবস্ট্রিংগুলি পরিবর্তন করতে পারে তখন কিছু অন্যান্য কৌশল ভঙ্গ হতে পারে - এই কৌশলগুলি এড়ানো উচিত।
একটি বিক্ষোভ :
$urls = [
'www.example.com/myurl.html?unwantedthngs#hastag',
'www.example.com/myurl.html'
];
foreach ($urls as $url) {
var_export(['strtok: ', strtok($url, '?')]);
echo "\n";
var_export(['strstr/true: ', strstr($url, '?', true)]); // not reliable
echo "\n";
var_export(['explode/2: ', explode('?', $url, 2)[0]]); // limit allows func to stop searching after first encounter
echo "\n";
var_export(['substr/strrpos: ', substr($url, 0, strrpos( $url, "?"))]); // not reliable; still not with strpos()
echo "\n---\n";
}
আউটপুট:
array (
0 => 'strtok: ',
1 => 'www.example.com/myurl.html',
)
array (
0 => 'strstr/true: ',
1 => 'www.example.com/myurl.html',
)
array (
0 => 'explode/2: ',
1 => 'www.example.com/myurl.html',
)
array (
0 => 'substr/strrpos: ',
1 => 'www.example.com/myurl.html',
)
---
array (
0 => 'strtok: ',
1 => 'www.example.com/myurl.html',
)
array (
0 => 'strstr/true: ',
1 => false, // bad news
)
array (
0 => 'explode/2: ',
1 => 'www.example.com/myurl.html',
)
array (
0 => 'substr/strrpos: ',
1 => '', // bad news
)
---