strtok
पहली बार होने से पहले आप स्ट्रिंग प्राप्त करने के लिए उपयोग कर सकते हैं?
$url = strtok($_SERVER["REQUEST_URI"], '?');
strtok()
?
क्वेरिस्ट्रिंग में सीधे सबस्ट्रिंग निकालने से पहले सबसे संक्षिप्त तकनीक का प्रतिनिधित्व करता है । explode()
कम प्रत्यक्ष है क्योंकि यह एक संभावित दो-तत्व सरणी का उत्पादन करना चाहिए जिसके द्वारा पहले तत्व को एक्सेस किया जाना चाहिए।
कुछ अन्य तकनीकें तब टूट सकती हैं जब क्वेरिस्ट्रिंग गायब हो या संभावित रूप से url में अन्य / अनजाने सब्सट्रेटिंग को म्यूट करें - इन तकनीकों से बचा जाना चाहिए।
एक प्रदर्शन :
$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
)
---