确定PHP中字符串中特殊字符的位置

时间:2015-07-04 17:34:41

标签: php string algorithm replace patindex

我必须确定字符串中特殊字符的位置,例如:

E77eF / 74 / VA在6和9位置(从1开始计算) 我们有'/'所以我必须将它们更改为位置编号 - > E77eF的 6 74的 9 VA

在MSSQL上,我可以使用PATINDEX,但我需要使用php。 它应该适用于除0-9a-zA-Z之外的所有内容

我在php.net上找到strpos()strrpos(),但我对我不起作用。 无论如何都试图做那样的事情?

2 个答案:

答案 0 :(得分:1)

<?php

$content = 'E77eF/74/VA';
//With this pattern you found everything except 0-9a-zA-Z
$pattern = "/[_a-z0-9-]/i";
$new_content = '';

for($i = 0; $i < strlen($content); $i++) {
    //if you found the 'special character' then replace with the position
    if(!preg_match($pattern, $content[$i])) {
        $new_content .= $i + 1;
    } else {    
        //if there is no 'special character' then use the character
        $new_content .= $content[$i];
    }   
}   

print_r($new_content);

?>

输出:

  

E77eF6749VA

答案 1 :(得分:0)

可能不是最有效的方式,但有效。

$string = 'E77eF/74/VA';
$array = str_split($string);

foreach($array as $key => $letter){
   if($letter == '/'){
      $new_string.= $key+1;
   }
   else{
      $new_string.= $letter;  
   }
}

echo $new_string;   // prints E77eF6749VA