i tek tırnak kullanırsanız str_replace fonksiyonu alışkanlık dize yerine

2 Cevap php

Bazı metni değiştirmek için php str_replace fonksiyonunu kullanarak. Aşağıda örneği.

str_replace("{x+{\$v}}", "{x-{\$v}}", $this->introtext);

str_replace('{x+{\$v}}', '{x-{\$v}}', $this->introtext);

İlk durumda, metni değiştirmek, ancak ikinci durumda bunu yapmıyor. İkisi arasındaki fark nedir?

2 Cevap

A difference ' ile " bulunmaktadır. Tek tırnaklı dizge içinde \ kurtulun.

EDIT: tek tırnaklı biri bunu yapmaz, bir çift tırnaklı dize bazı genişleme (bağlantıya bakınız) yapar, açıklığa kavuşturmak için. $ çift tırnaklı dizge içinde \ ile öncelenmesi gerekir, fakat tek tırnak içindeki. İkinci durumda, bu anlamıyla \$ ile sonuçlanacaktır.

Dolar işareti ve kaşlı çift tırnaklı dizge içinde özel anlamları vardır. $, doğrudan bir dizeye bir değişken içerik koymak için kullanılır. {} onların anlamı belirsiz olduğu durumda PHP değişkenleri sarmak için kullanılır.

"{$hell}o" $hell içine değişkenin içeriğini vereceğini ise Örneğin "$hello", dizeye değişkenin içeriğini $hello koyardı literal 'o' harfine takip dize.

Tek tırnak hiç bu var (ve basitlik için, daha karmaşık dizeleri alıntı yaparken genelde tercih edilir) yoktur. Yani '{$hell}o' gerçek karakterleri içeren bir dize olurdu {$hell}o.

Bu değiştirmek için çalışıyoruz ne tam dizeleri biraz belirsiz. Ile literal {x+$v} yerine {x-$v} daha sonra kullanın:

str_replace('{x+$v}', '{x-$v}', $this->introtext);