You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP用str_replace删除元音 SOAP接口Java客户端仅返回单个单词问题

问题原因
  • 核心诱因在Java客户端的输入读取逻辑:Scanner类的next()方法默认以空白字符(空格、换行符、制表符等)作为分隔符,读取到第一个空白符就会终止取值。用户输入hello world时,sc.next()实际只返回了第一个单词hello,传给SOAP接口的参数仅有hello,PHP处理后删除元音e、o,自然只返回hll。
  • 附加注意点:当前PHP代码的元音替换数组中包含了空格字符" ",即使传入完整字符串,空格也会被删除,最终返回结果会把所有单词拼接在一起,若业务需要保留空格,需删除数组中的空格项。
解决方法
  • 第一步:修改Java客户端的输入读取代码,将sc.next()替换为sc.nextLine(),该方法会读取整行输入,包含空格,直到遇到换行符为止,可拿到用户输入的完整内容。
  • 第二步(可选,按需调整):如果业务需要保留输入中的空格,修改PHP代码,删除$vocales数组末尾的" "元素。

修改后代码示例

Java客户端代码

Consonante servidor = new Consonante();
ConsonantePortType puerto = servidor.getConsonantePort();
Scanner sc = new Scanner(System.in);
System.out.println("ingresa una palabra");
// 替换next为nextLine读取整行输入
String a = sc.nextLine();

String respuesta = puerto.devolverConsonante(a);
System.out.println(respuesta);

保留空格的PHP代码调整

// 移除数组末尾的空格元素即可
$vocales = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$resultado = str_replace($vocales, "", $mensaje);

return $resultado;

内容的提问来源于stack exchange,提问作者erik tapia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:45:02