preg_replace $ işaretleri yerini alıyor

2 Cevap php

Böyle $ POST_TITLE adında bir değişkenin içeriği ile% POST_TITLE% olarak "şablon belirteçler" yerine aşağıdaki kod parçası var.

function replaceTags( $template, $newtext ) {
    $template = preg_replace( '/%MYTAG%/', $newtext, $template );
    return $template;
}

Konu $ post_full içinde bir '$' olduğunda, döndürülen sonuç bu silinen olmasıdır. Örneğin:

$template = "Replace this: %MYTAG";
$newtext = "I earn $1,000,000 a year";

print replaceTags( $template, $newtext );

// RESULT
Replace this: I earn ,000,000 a year";

Ben bu doğru $ newText $ 1 kaçan değil ile ilgisi var biliyorum. Ben preg_quote kullanarak denedim () ama istenen etkiye sahip değildir.

2 Cevap

According to preg_replace manual, preg_replace() treats this ($1) as backreference.
(and not a "callback syntax" as mentionned in the comments of the preg_replace manual page.
Thank you Jan Goyvaerts).

$newtext = preg_replace("!" . '\x24' . "!" , '\\\$' , $newtext );

Lütfen '$' işareti özen

Aslında orada bir regexpi kullanmıyorsanız bu yana ummm, neden sadece kullanmak değil, str_replace? Daha hızlı olacak ve bu gibi garip sorunlar olmayacaktır.