1

例如我有字符串one two three four five,我想删除之前two和之后的所有字符,我知道这是函数preg_replace(),但我不知道如何写这个表达式,我不知道是什么意思,例如 '/([az])([ AZ])/' 请说出这个表达式的名称$pattern和含义

4

2 回答 2

2

如果您正在寻找基于 preg_replace 的解决方案,那么这里是:

$str = 'one two three four five';
var_dump ( preg_replace('#^.*?(two.*?four).*$#i', '$1', $str) );

扩展: RegEx 用于preg_replace首先将文本匹配到您的起始文本two,然后匹配到您的结束文本four,最后用匹配的字符串替换它,从而丢弃之前two的所有文本和之后的所有文本four。请注意.*?使您的匹配不贪心。在此处阅读有关正则表达式的更多信息:http ://www.regular-expressions.info/

输出

string(14) "two three four"
于 2012-09-20T14:12:46.990 回答
1

preg_replace 是一个接受正则表达式进行替换的函数。

您可以并且应该了解这些,因为它们非常强大,但它们对于您的问题并不是必不可少的。

您可以使用strpossubstr功能

substr接受要缩短的字符串、起始位置和字符数,然后返回缩短的字符串。

strpos接受一个要搜索的字符串和一个要搜索的字符串,并返回第一个字符串中第二个字符串的位置。

所以你可以这样使用它们:

$text = "one two three four five";
$locationOfTwo = strpos($text, "two"); //The location in the string of the substring "two" (in this case it's 4)
$locationOfFour =strpos($text, "four") + strlen("four"); //Added the length of the word to get to the end of it (In this case it will set the variable to 18).
$subString = subsstr($text, locationOfTwo, (locationOfFour-locationOfTwo));
于 2012-09-20T14:07:06.370 回答