Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要删除的正则表达式';%i';和PHP中的字符串类似?_Php_Regex - Fatal编程技术网

要删除的正则表达式';%i';和PHP中的字符串类似?

要删除的正则表达式';%i';和PHP中的字符串类似?,php,regex,Php,Regex,我有一个web应用程序需要解析iOS应用程序中的字符串文件。我试图在一个字符串中找到Objective-C样式的百分比转义的所有实例,并在PHP中为它们添加一个span类。比如说, "Hello my name is %@ and I have %ld cats" 应成为: "Hello my name is <span class='b'>%@</span> and I have <span class='b'>%ld</span> cats"

我有一个web应用程序需要解析iOS应用程序中的字符串文件。我试图在一个字符串中找到Objective-C样式的百分比转义的所有实例,并在PHP中为它们添加一个span类。比如说,

"Hello my name is %@ and I have %ld cats"
应成为:

"Hello my name is <span class='b'>%@</span> and I have <span class='b'>%ld</span> cats"
“你好,我的名字是%@我有%ld只猫”
不幸的是,我的正则表达式技能已经过时了。如何才能正确有效地执行此操作?(一次可能解析1000多个字符串)

可能

$string = "Hello my name is %@ and I have %ld cats";
$pattern = "/(%[^\s]+)/";
$replacedStr = preg_replace($pattern, "<span class='b'>$1</span>", $string);
$string=“你好,我的名字是%@我有%ld只猫”;
$pattern=“/([^\s]+)/”;
$replacedStr=preg_replace($pattern,$1,$string);
根据NullUserException,这也将起作用(实际上更短!):

$string=“你好,我的名字是%@我有%ld只猫”;
$pattern=“/%\S+/”;
$replacedStr=preg_replace($pattern,$0,$string);

现在没有时间给你写正则表达式(我也必须像你一样自己去挖掘记忆),但是在这里可以找到一个让你的正则表达式正确的奇妙工具:
[^\s]
可以写成
\s
;您还可以删除捕获组并使用
$0
$string = "Hello my name is %@ and I have %ld cats";
$pattern = "/%\S+/";
$replacedStr = preg_replace($pattern, "<span class='b'>$0</span>", $string);