我输入的格式是:
文字编号1:12.3456°,文字编号2:78.9012°。
我想用PHP代替这里:
GPS:12.3456,78.9012: 文字编号1:12.3456°,文字编号2:78.9012°。
再次,大文字输入:
“
Bla bla bla,随机文字,bla bla ... 文字编号1:12.3456°,文字编号2:78.9012°。 更多文字......
“
此输出需要:
“
Bla bla bla,随机文字,bla bla ... GPS:12.3456,78.9012: 文字编号1:12.3456°,文字编号2:78.9012°。 更多文字......
“
输出需要在我搜索之前追加:
“GPS:12.3456,78.9012:
”
这两个数字在所有行中也有所不同:12.3456和78.9012 所有其他都是固定的。 (空格,其他角色。)
如果您现在如何从大文本中检测并获取此行:
“Text number1: 12.3456°, text number2: 78.9012°.
”
也有帮助。
如果我有这条线,我可以找到数字并替换。
我将使用explode来检测数字(在数字之前和之后找到空格)和str_replace来替换输出到输出。我知道这不是最好的方式,但我知道这些功能。
(抱歉,文字格式不能正常工作。我修改输入,输出,更改“,”到空格)
谢谢!
答案 0 :(得分:2)
$text = 'Bla bla bla, random text, bla bla... Text,number1: 12.3456°, text,number2: 78.9012°. And more text... ';
echo preg_replace('%([\w\s,]+:\s(\d+\.\d+)°,\s[\w\s,]+:\s(\d+\.\d+)°)%ui', ' GPS:$2,$3: $1', $text);
//Output: Bla bla bla, random text, bla bla... GPS:12.3456,78.9012: Text,number1: 12.3456°, text,number2: 78.9012°. And more text...
答案 1 :(得分:1)
它不漂亮,但我晚餐很晚了!
<?
$text = 'Bla bla bla, random text, bla bla...
Text,number1: 12.3456°, text,number2: 78.9012°.
And more text...';
$lines = array();
foreach(explode("\r\n",$text) as $line){
$match = array();
preg_match_all('/\d{0,3}\.?\d{0,20}°/', $line, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
$match[] = $result[0][$i];
}
if(count($match)>0){
$lines[] = 'GPS:'.str_replace('°','',implode(',',$match));
}
$lines[] = $line;
}
echo implode('<br>',$lines);
?>
Bla bla bla, random text, bla bla...
GPS:12.3456,78.9012
Text,number1: 12.3456°, text,number2: 78.9012°.
And more text...
答案 2 :(得分:1)
$text = 'Bla bla bla, random text, bla bla...
Text number1: 12.3456°, text number2: 78.9012°.
And more text';
$pattern = '#[a-zá-úàü\d ,]+:\s?([\d.]+)°[^:]+:\s?([\d.]+)°#i';
return preg_replace_callback($pattern, function($match) {
return sprintf("GPS:%s,%s:\n%s.",
$match[1],
$match[2],
$match[0]
);
}, $text);