Заменить символы словом в PHP? - PullRequest
0 голосов
/ 09 марта 2012

Хотите заменить определенные буквы в строке на полное слово.

Я использую:

    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

Какя делаю это?Кстати, это заменить знаки препинания шестнадцатеричными символами.

Спасибо всем.

Ответы [ 5 ]

0 голосов
/ 09 марта 2012

Я должен предположить, что вы не хотите использовать шестнадцатеричные символы вместо знаков препинания, а только HTML-объекты.Имейте в виду, что str_replace () при вызове с массивами будет проходить по строке несколько раз, заменяя, таким образом, символ ";"в "&#123;" также!

Ваш опубликованный код бесполезен для замены знаков препинания.

используйте strtr () с массивами, у него нет недостатка str_replace ().

$aReplacements = array(',' => '&#44;', '.' => '&#46;'); //todo: complete the array
$sText = strtr($sText, $aReplacements);
0 голосов
/ 09 марта 2012

если вы хотите использовать свой код, просто измените $convString .= "&#".ord($char).";";

до $convString .= $char;

0 голосов
/ 09 марта 2012

Если вы просто хотите заменить вхождение a на hello в строке, передаваемой в функцию, почему бы не использовать PHP str_replace()?

function spec2hex($instr) {    
  return str_replace("a","hello",$instr);
}
0 голосов
/ 09 марта 2012

ord() ожидает только ОДИН символ.Вы передаете hello, поэтому Орд делает свое дело только на h:

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

Таким образом, на самом деле ваш вывод фактически

&#104;d&#104;m
0 голосов
/ 09 марта 2012

Использование http://php.net/substr_replace

substr_replace($instr, $word, $i,1); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...