Php 正则表达式帮助:如何仅匹配包含“";或;操作人员
我正在使用php的Php 正则表达式帮助:如何仅匹配包含“";或;操作人员,php,regex,preg-replace,Php,Regex,Preg Replace,我正在使用php的preg\u replace() 基本上,我有两种可能的字符串匹配: 你好,现实世界 问候 以下是我希望实现的目标: Hello Real World 问候语 规则说明:如果字符串包含空格,请在第一个空格字符后插入。如果字符串不包含空格(一个单词),请在字符串的中间(+/-If奇数字符计数)插入 到目前为止,我提出了一个长期有效的解决方案: <?php $str = "Hello Real World"; echo preg_match("/ /", $str) ? p
preg\u replace()
基本上,我有两种可能的字符串匹配:
Hello Real World
问候语
。如果字符串不包含空格(一个单词),请在字符串的中间(+/-If奇数字符计数)插入
到目前为止,我提出了一个长期有效的解决方案:
<?php
$str = "Hello Real World";
echo preg_match("/ /", $str) ? preg_replace("/ /", " </span>", $str, 1) : preg_replace("/.{" . round(strlen($str)/2) . "}/", "$0</span>", $str, 1);
?>
正则表达式引擎不会提前知道字符串中是否有空格。您根本不需要正则表达式来实现这一点,尽管您确实需要多个函数:
$pos = strpos($str, ' ');
if ($pos === false) {
//No space found
$pos = intval(strlen($str) / 2);
}
else {
//we want to insert *after* the space
$pos++;
}
$str = substr_replace($str, '</span>', $pos, 0);
$pos=strpos($str,”);
如果($pos==false){
//找不到空间
$pos=intval(strlen$str)/2;
}
否则{
//我们想在空格后插入*
$pos++;
}
$str=substr\u replace($str,,$pos,0);
不,没有一种简洁优雅的方式来完成你的想法。正则表达式不是一个可以在字符串上执行无限壮举的神奇工具
我建议的一件事是不要到处使用正则表达式,因为不需要正则表达式来找到空间
echo strpos( ' ', $str ) === FALSE
? str_replace ( ' ', '</span>', $str, 1 ) /* Only replace 1 occurrence */
: preg_replace("/.{" . round(strlen($str)/2) . "}/", "$0</span>", $str, 1);
echo strpos(“”,$str)==FALSE
? str_replace('',$str,1)/*仅替换1次*/
:preg_replace(“/.{”.round(strlen($str)/2)。“}/”、“$0”、$str,1);
例如,“如果您不需要复杂的替换规则(如正则表达式),则应始终使用此函数而不是preg_replace()”谢谢!这就是我最后使用的:
echo substr\u replace($str',,(strpos($str',)==false?intval(strlen($str)/3):strpos($str',),0)代码>因为我真的需要一行程序。好吧,但请注意,您最后会调用strpos
两次
echo strpos( ' ', $str ) === FALSE
? str_replace ( ' ', '</span>', $str, 1 ) /* Only replace 1 occurrence */
: preg_replace("/.{" . round(strlen($str)/2) . "}/", "$0</span>", $str, 1);