例如我有字符串one two three four five
,我想删除之前two
和之后的所有字符,我知道这是函数preg_replace()
,但我不知道如何写这个表达式,我不知道是什么意思,例如 '/([az])([ AZ])/' 请说出这个表达式的名称$pattern
和含义
问问题
2537 次
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 是一个接受正则表达式进行替换的函数。
您可以并且应该了解这些,因为它们非常强大,但它们对于您的问题并不是必不可少的。
您可以使用strpos
和substr
功能
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 回答