Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
Php 正则表达式替换单词_Php_Regex_Replace_Expression - Fatal编程技术网

Php 正则表达式替换单词

Php 正则表达式替换单词,php,regex,replace,expression,Php,Regex,Replace,Expression,我有一个字符串$str,定义如下: $str=“Horosho byt'tihoney 23 Sen 2012 14:00 | 20:20 | 00:30 24 Sen 2012 09:30 | 14:00 Obitel'zla:Vozmezdie 3D 23 Sen 2012 16:10 | 20:25 | 22:25 Osobo opasny 23 Sen 2012 18:00 | 24 Sen 2012 11:30 | 18:00 Sen 2012 11:30 | 18:00 26 Sen

我有一个字符串
$str
,定义如下:

$str=“Horosho byt'tihoney 23 Sen 2012 14:00 | 20:20 | 00:30 24 Sen 2012 09:30 | 14:00 Obitel'zla:Vozmezdie 3D 23 Sen 2012 16:10 | 20:25 | 22:25 Osobo opasny 23 Sen 2012 18:00 | 24 Sen 2012 11:30 | 18:00 Sen 2012 11:30 | 18:00 26 Sen 2012 11:30 | 18:00 Patrul'23 Sen 20:10 12450 12450”
我想用

标记将单词包围起来;例如,
horoshobyt'tihoney
将成为

horoshobyt'tihoney
,而
Obitel'zla:Vozmezdie 3D
将成为

Obitel'zla:Vozmezdie 3D

到目前为止,我所拥有的:

preg_replace("/(?<=\s)([\p{L}*?]{3,})(?=\s[0-9]{2}\s)/u", "<br>$1<br>", $str);

preg_replace(“/”(?好的,这是我的解决方案。这不完全是您指定的,但它解决了您的问题。日期和时间似乎比名称更规则(因为后者可能包含数字、撇号和冒号…谁知道还有更多)。因此,我认为,将日期和时间括在

中也一样好(当然,您必须在开头添加另一个

,然后从结尾删除一个,但我想这不是一个太大的问题。下面是一个正则表达式,它可以查找日期和时间字符串并将其括起来(及其周围的空格)在

中:

$newStr = preg_replace("/(\s\d{1,2}\s[A-Z][a-z][a-z]\s\d{4}|\s\d{2}:\d{2}|\s\|)+\s?/", "<br/>$0<br/>", $str);
$newStr=preg_replace(“/(\s\d{1,2}\s[A-Z][A-Z][A-Z]\s\d{4}\s\d{2}:\d{2}\s\}+\s?/”,“
$0
,$str);
我假设您的日期可能有1或2个数字(从示例字符串中看不出来),并且您的所有月份都是1个大写字符和2个小写字符


编辑:我在最后添加了一个
,以使其与字符串中的最后一次一起工作。

请在编辑文章内容的同时,用您使用的语言名称标记此文章,以便清楚地知道您要更改的文本。目前,
标记实际上正在评估并创建n新的行。通过在示例中用反勾号围绕文本,您可以消除此问题。您真的需要2个

?我认为一个就足够了。您是否也需要匹配
Osobo opasny
Patrul'
?非常感谢。我猜不出将日期和时间包含在标记中。没有问题。如果这回答了您的问题问题,请接受并/或向上投票。有人知道如何用br标记将所有单词(不仅仅是日期和时间)括起来吗?@johnywhy“单词”是什么?非空格字符?搜索
\s+
。然后看一看。这似乎很基本。;)我的答案如下: