字符串字符替换 PHP
String characters replacement PHP
我快要解决问题了,但是我不知道如何删除字符串周围的空格。例如:' ! '
、'! '
和 ' !'
变为 '!'
。这适用于?特点, 。字符和其他标点字符。
到目前为止,这是我的代码。它应该接受字符并将它们转换为我已经完成的北约单词,但我的标点符号是错误的。例如,当我不希望标点符号之间有空格时,' ! awesome. .! '
会变成 ' ! Alfa Whiskey Echo Sierra Oscar Mike Echo . . !'
。
function to_nato($words){
$key = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$translationKey = array("Alfa", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "Xray", "Yankee", "Zulu");
$strToRet = "";
for($i = 0; $i < strlen($words); $i++) {
$letter = substr($words, $i, 1);
if(ctype_alpha($letter)) {
for($keySearch = 0; $keySearch < count($key); $keySearch++) {
$letterToSearch = array_search($key[$keySearch], $key);
if(strcasecmp($letter, $key[$letterToSearch]) == 0) {
$natoLetter = $translationKey[$letterToSearch];
$strToRet .= $natoLetter;
}
}
}
else {
$strToRet .= $letter;
}
}
$strToRet = preg_replace('/([a-z])([A-Z])/s',' ', $strToRet);
//$strToRet = str_replace(" ! ", "!", $strToRet, $count);
return $strToRet;
}
尝试将此 if(ctype_alpha($letter)
更改为此 if(ctype_alpha($letter) || $letter==" ")
。我可以去掉结果中的 space(使用您在描述中提供的输入字符串)。
从原始字符串中删除标点符号周围的空格:
$words = preg_replace('/\s*([^\w\s]+)\s*/', '', $words);
我快要解决问题了,但是我不知道如何删除字符串周围的空格。例如:' ! '
、'! '
和 ' !'
变为 '!'
。这适用于?特点, 。字符和其他标点字符。
到目前为止,这是我的代码。它应该接受字符并将它们转换为我已经完成的北约单词,但我的标点符号是错误的。例如,当我不希望标点符号之间有空格时,' ! awesome. .! '
会变成 ' ! Alfa Whiskey Echo Sierra Oscar Mike Echo . . !'
。
function to_nato($words){
$key = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$translationKey = array("Alfa", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "Xray", "Yankee", "Zulu");
$strToRet = "";
for($i = 0; $i < strlen($words); $i++) {
$letter = substr($words, $i, 1);
if(ctype_alpha($letter)) {
for($keySearch = 0; $keySearch < count($key); $keySearch++) {
$letterToSearch = array_search($key[$keySearch], $key);
if(strcasecmp($letter, $key[$letterToSearch]) == 0) {
$natoLetter = $translationKey[$letterToSearch];
$strToRet .= $natoLetter;
}
}
}
else {
$strToRet .= $letter;
}
}
$strToRet = preg_replace('/([a-z])([A-Z])/s',' ', $strToRet);
//$strToRet = str_replace(" ! ", "!", $strToRet, $count);
return $strToRet;
}
尝试将此 if(ctype_alpha($letter)
更改为此 if(ctype_alpha($letter) || $letter==" ")
。我可以去掉结果中的 space(使用您在描述中提供的输入字符串)。
从原始字符串中删除标点符号周围的空格:
$words = preg_replace('/\s*([^\w\s]+)\s*/', '', $words);