说我有这个字符串:fg_^"-kv:("value_i_want")frt
。除了value_i_want
之外,该字符串将保持不变 - 这可能会一直在变化。这个小字符串隐藏在一个巨大的数据串中(不断变化),我保存在一个PHP变量
我是否可以对字符串执行正则表达式,让我们说50000个字符来查找该字符串(上面)而不知道value_i_want是什么,然后将值保存在变量中 - 使用PHP
答案 0 :(得分:3)
您可以使用strpos
查找所需值的位置。您可能需要稍微调整一下,我还没有测试过它。 $long_string
是您要搜索匹配的字符串。
$start = strpos($long_string, 'fg_^"-kv:("', 0);
$end = strpos($long_string, '")frt', $start);
$value_i_want = substr($long_string, $start+11, $end-$start-11);
答案 1 :(得分:1)
试试这个:
if (preg_match_all('/(?<=fg_\^\"\-kv:\(\")[a-z_]+(?=\"\)frt)/', $yourstring, $matches)) {
echo "Match was found <br />";
echo $matches[0];
}
模式:(?<=fg_\^\"\-kv:\(\")[a-z_]+(?=\"\)frt)
(?<=fg_\^\"\-kv:\(\")
- 正面的后瞻断言,意味着搜索的字符串应该在此字符串之后:fg_^"-kv:("
(?=\"\)frt)
- 积极的先行断言,意思相同,但在此之前:
")frt
[a-z_]+
- 您要查找的字符串,可能包含一个或多个字母和下划线。根据您的需要进行更改。