2012-03-09 19 views
-1

文字列中の特定の文字を完全な単語に置き換えたい。PHPで文字を単語に置き換えますか?

私が使用している:

function spec2hex($instr) { 

    for ($i=0; $i<strlen($instr); $i++) { 

     $char = substr($instr, $i,1); 

     if ($char == "a"){ 
      $char = "hello"; 
     } 

     $convString .= "&#".ord($char).";"; 

    } 

    return $convString; 
} 

$myString = "adam"; 

$convertedString = spec2hex($myString); 

echo $convertedString; 

それが戻っています:

hdhm 

私はこれをどのように行うのですか?ちなみに、これは句読点を16進文字で置き換えることです。

ありがとうございます。

+0

あなたの質問は非常に曖昧です。ちょうど入力と望ましい出力の例を挙げてください。 – Poni

+0

実行している問題は、 'ord($ char)'は常に 'ord'が期待する文字ではないことです。 –

答えて

0

PHPのstr_replace()を使用しないで、なぜあなただ​​けの、あなたが関数に渡す文字列の中helloaの発生を交換したい場合は?

function spec2hex($instr) {  
    return str_replace("a","hello",$instr); 
} 
0

ord()は、1文字のみが必要です。あなたはhelloに渡しているので、ORDはhにそのことをやっている:

php > echo ord('hello'); 
104 
php > echo ord('h'); 
104 

だから、実際には、あなたの出力は、実際に

&#104;d&#104;m 
+0

複数の文字を受け入れることができますか? –

+0

は別の機能を気に入っていますか? –

+0

いいえ、文字列を個々の文字に「分解」してordにループを適用することはできます。 –

0

あなたは同じコードを使用したい、それだけで$convString .= "&#".ord($char).";";を変更で私はあなたの代わりにpunctuaの進文字を持ってしたくないと仮定しなければならない$convString .= $char;

0

HTMLエンティティです。配列で呼び出されるとstr_replace()は文字列を何度も実行するので、 ";"を置き換えることに注意してください。 「&#123;」にも!

あなたの投稿されたコードは、句読点の置換には役に立ちません。

配列でstrtr()を使用すると、str_replace()の欠点はありません。

$aReplacements = array(',' => '&#44;', '.' => '&#46;'); //todo: complete the array 
$sText = strtr($sText, $aReplacements); 
関連する問題