2016-05-16 7 views
0

を削除されて$兆候がこんにちは私は(spintaxを使用して)いくつかのスピンコンテンツを作成するために、PHPでこの機能を使用しています。しかし、spintaxに$(ドル記号)が含まれている場合、それらは出力で削除されます。中PHPはなぜ

function spintext($s){ 

     preg_match('#\{(.+?)\}#is',$s,$m); 
     if(empty($m)) return $s; 

     $t = $m[1]; 

     if(strpos($t,'{')!==false){ 
      $t = substr($t, strrpos($t,'{') + 1); 
     } 

     $parts = explode("|", $t); 
     $s = preg_replace("+\{".preg_quote($t)."\}+is", $parts[array_rand($parts)], $s, 1); 

     return spintext($s); 
    } 

$out = spintext("Spinning a dollar sign: {$200|$400|$300}"); 
echo $out; 

結果:これはあるかもしれない理由

Spinning a dollar sign: 0 

は誰でも助言することはできますか? また、スピンプロセスのスピードアップとメモリ使用量の削減のために、このコードの効率が向上する可能性のある領域はありますか?

+0

dolar記号を使用すると、出力にそれを維持したいならば、あなたは、単一引用符を使用 'または$ – Richard

答えて

2

あなたは、文字列を二重引用符を使用しているよう:

$out = spintext("Spinning a dollar sign: {$200|$400|$300}"); 

PHPを解析し、文字列を出力する前に、その変数の内容に置き換えるしようとします。

(変数が数字で始めることはありませんとしても、このエラーをスローする必要があります。)

あなたは、単一引用符(リテラル)

$out = spintext('Spinning a dollar sign: {$200|$400|$300}'); 

またはドル記号をエスケープを使用するか必要があります\$

$out = spintext("Spinning a dollar sign: {\$200|\$400|\$300}"); 
+0

ポインタをありがとう\ $記号の前に脱出するか、変数の一部です。 私は例えば変数としてテキストを割り当てています場所について: '$のtexttospin = "ドル記号スピニング:{\ $ 200 | \ $ 400 | \ $ 300}"; $アウト= spintext($のtexttospin); ' –

+0

何それについてはどうですか?よく分からない – DevDonkey

関連する問題