2016-03-31 34 views
0

kısmına aynı görünmesine rağmen çalışmıyor herhangi bir sorgu paraziti olmadan. baseUrl sadece bu - web sitesinin temel URL'sidir. $currentSlug, ikincisi olmayan (books/our-series/boffin-boy.html) olmalıdır, ancak str_replace hiçbir şey yapmıyor gibi görünmektedir.str_replace arama parametreleri ben bu kod basit biraz var konunun

.lcl yalnızca yerel dev ortamı için kullanıyorum biten bir etki alanıdır.

Umarım açık bir şey eksik. Herhangi bir yardım lütfen?

DÜZENLEME: Aşağıdaki yanıtlarda belirtildiği gibi, string(27) olması gerekenden daha fazladır. , Bir Magento fonksiyonu olmasına rağmen https://magento.stackexchange.com/questions/100579/why-doesnt-this-url-comparison-work

hala almak için saf PHP olmalıdır - burada aynı problem olduğu için

$baseUrl = Mage::getUrl(); // this is a core Magento function 
$baseUrl = trim($baseUrl); 
$baseUrl = str_replace("\0", "", $baseUrl); 
$baseUrl = (string) $baseUrl; 

var_dump(addslashes($baseUrl)); 

// outputs the same length, string(27) 

Birisi görünür: Şu ana $baseUrl almaya çalışıyorum nasıl İhtiyacım olan değişkenin dışında karakterler var mıydı?

+0

? Sadece "mysite" deyin. Belki de sevmediği bir char var mı? – Andreas

+0

str_replace sadece sümüklü gösteren iyi çalışıyor ... – OBAID

cevap

1

ama sadece 18 karakter gösterir:

string(27) "http://mysite.lcl/" 

Bu kod benim için çalışıyor. Dizede gizli karakterler olmalı, bu nedenle işlev, $currentUrl'da bulamıyor.

var_dump(addslashes($baseUrl)); ile içerideki şeyleri kontrol etmeye ve gizli karakterleri kaldırmaya çalışın. O zaman işe yaramalı. Bir soru kalır, değişken nasıl oluşturulur. Bahse girerim \0 bayt bir şekilde eklenir.

str_replace("\0", "", $baseUrl); 

Sonra senin iyi çalışması gerekir değiştirilmesi:

dize bunları içeriyorsa \0 bayt kaldırın.

+0

Belirttiğiniz için teşekkürler, önerilerinizi denedim (cevabımı düzenledim); hala uzunluğu 27 olarak var. Çok garip! – Sarah

+0

Çıkışı sağdan sonra göster $ baseUrl = Mage :: getUrl(); 'var_dump (addslashes ($ baseUrl));' –

+0

Hala tam olarak aynı, 'string (27)" http: //mysite.lcl/ " ' – Sarah

0

Neden ikinci satırda 27 karakter var? Eğer dize uzunluğu 27 olduğunu söylüyor $baseUrl ait var_dump() çıkışında bir göz atacak olursak

<?php 
$currentUrl = 'http://mysite.lcl/books/our-series/boffin-boy.html'; 
$baseUrl = 'http://mysite.lcl/'; 

var_dump($currentUrl); 
var_dump($baseUrl); 
// strip out base url, so we just get slug of page 
$currentSlug = str_replace($baseUrl,'',$currentUrl); 
var_dump($currentSlug); 
+0

Haklısın, bunu vurguladığın için teşekkürler. Aynı şeyi yaparsam beklenen sonucu alırım.'$ BaseUrl' değerini nasıl elde ettiğimi bilmeliyim, ama ne zaman anlamıyorum 'var_dump', görünür karakterlerden daha fazla bir dize olduğunu söylüyor. – Sarah

0

preg_replace() denediniz mi?

$url='http://mysite.lcl/books/our-series/boffin-boy.html'; 

var_dump(preg_replace("/(http|https):\/\/((?:[a-z][a-z\.\d\-]+)\.(?:[a-z][a-z\-]+))(?![\w\.])/is", '', $url)); 

Çıktı: Bir smaler katılmak ve dışarı değiştirmek ne olur

string(33) "/books/our-series/boffin-boy.html" 
+0

Bu alternatif bir çözüm olarak çalışır, ancak str_replace'ın çalışmadığı neden gizemini çözmez. – Sarah