2008-11-05 24 views
29

मेरे php एक स्ट्रिंग में एक चरित्र को हटाने कमजोर है और मैं इस स्ट्रिंग को बदलने के लिए कोशिश कर रहा हूँ:पीएचपी

http://www.example.com/backend.php?/c=crud&m=index&t=care 
           ^

होने के लिए:

http://www.example.com/backend.php?c=crud&m=index&t=care 
           ^

backend.php? के बाद / को हटाने। ऐसा करने के सर्वोत्तम तरीके पर कोई विचार?

धन्यवाद!

+0

आप वास्तव में सही एक के रूप में सीएमएस 'जवाब को चिह्नित करना चाहिए। – eyelidlessness

उत्तर

95

मुझे लगता है कि यह बस str_replace उपयोग करना बेहतर है, मैनुअल की तरह कहते हैं:

आप कल्पना (नियमित अभिव्यक्ति की तरह) नियमों की जगह की जरूरत नहीं है, तो आप हमेशा इस समारोह बजाय का उपयोग करना चाहिए ereg_replace() या preg_replace() का।

<? 
$badUrl = "http://www.site.com/backend.php?/c=crud&m=index&t=care"; 
$goodUrl = str_replace('?/', '?', $badUrl); 
+1

आपको मेरा वोट मिला है। – eyelidlessness

+0

धन्यवाद eyelidlessness;) – CMS

8
$str = preg_replace('/\?\//', '?', $str); 

संपादित करें: सीएमएस का जवाब देखें। देर हो चुकी है, मुझे बेहतर पता होना चाहिए।

+0

धन्यवाद, यह सही है। –

+2

str_replace एक regex से अंधेरे से तेज है। – pestilence669

+1

@ महामारी, इसलिए मैंने सीएमएस के उत्तर की सिफारिश की। – eyelidlessness

0

जबकि एक regexp यहां ठीक होगा, मैं आपको एक वैकल्पिक विधि के साथ प्रस्तुत करूंगा। यह बराबर regexp से तेज़ हो सकता है, लेकिन जीवन के बारे में सभी विकल्पों (... या कुछ)।

$length = strlen($urlString); 
for ($i=0; $i<$length; i++) { 
    if ($urlString[$i] === '?') { 
    $urlString[$i+1] = ''; 
    break; 
    } 
} 

अजीब, मुझे पता है।

+0

एर, क्या होगा यदि $ urlString [$ i + 1] नहीं है /? – eyelidlessness

+1

पलकहीनता: समस्या उस मामले को पेश नहीं करती थी, इसलिए न तो मेरा समाधान इसे ध्यान में रखता था। एमडीकोर: कृपया विस्तृत करें, ऐसा क्यों? –

+0

मैं एक समस्या में चला गया है जहां यह उपयोगी है। यदि आपकी स्ट्रिंग आकार में मेग्स के क्रम में है (यह हो सकती है), preg_replace या str_replace चलाना आपके php.ini की memory_limit को मारने का जोखिम उठाएगा। Php में pcre_replace कोड हमेशा कुछ करने से पहले अपने स्ट्रिंग आकार को mallocs 2x करता है, इसलिए यह एक समस्या हो सकती है। –

0
$splitPos = strpos($url, "?/"); 
if ($splitPos !== false) { 
    $url = substr($url, 0, $splitPos) . "?" . substr($url, $splitPos + 2); 
}