PHP-拆分字符串
我想把这个字符串分成几个部分,比如“Source:Web”、“Pics:1”。。。在我的网站中使用它。 从“Lat:”和“Lon:”中,我只需要提取数字PHP-拆分字符串,php,Php,我想把这个字符串分成几个部分,比如“Source:Web”、“Pics:1”。。。在我的网站中使用它。 从“Lat:”和“Lon:”中,我只需要提取数字 <cap> Source: Web | Pics: 1 | Frame: 2 | Date: 4-25-2011 | On: App | Lat: 51.2222 | Lon: 7.6555 </cap> 资料来源:网页图片:1帧:2日期:2011年4月25日日期:App Lat:51.2222 Lon:7.
<cap>
Source: Web | Pics: 1 | Frame: 2 | Date: 4-25-2011 | On: App | Lat: 51.2222 | Lon: 7.6555
</cap>
资料来源:网页图片:1帧:2日期:2011年4月25日日期:App Lat:51.2222 Lon:7.6555
最好的方法是什么?我读过关于explode()的书,但我没有让它起作用。
干杯你说得对。这是最好的功能。试试这个。它将拆分它们并创建关联数组:
$string = "Source: Web | Pics: 1 | Frame: 2 | Date: 4-25-2011 | On: App | Lat: 51.2222 | Lon: 7.6555";
$pieces = explode("|", $string);
print_r($pieces);
$string = 'Source: Web | Pics: 1 | Frame: 2 | Date: 4-25-2011 | On: App | Lat: 51.2222 | Lon: 7.6555';
$list = explode('|', $string);
$assoc = array();
foreach($list as $part) {
list($key, $val) = explode(':', $part);
$assoc[trim($key)] = trim($val);
}
print_r($assoc);
下面是我使用
explode
()
用法
echo $finalArray['Lon']; //yields '7.6555'
$val=这是一个荒谬的单行程序,可能永远都不应该使用,但它不使用循环(我讨厌循环)。我也喜欢练习我的REs
$str = 'Source: Web | Pics: 1 | Frame: 2 | Date: 4-25-2011 | On: App | Lat: 51.2222 | Lon: 7.6555';
preg_match( sprintf( '~%s~', implode(array_map( function($val){ if ($val) return sprintf( '%1$s:\s(?P<%1$s>.*?)(?:(?:\s\|\s)|(?:$))', $val ); }, preg_split( '~:.*?(?:(?:\s\|\s)|(?:$))~', $str ) ) ) ), $str, $m );
print_r($m);
这真的不是一个好答案。从他的问题中,他了解explode(),但无法使其正常工作。如果你打算建议他使用它,你应该提供一个例子,就像其他答案一样感谢大家提供的众多示例和信息。我真的很感激!这将为您提供一个混合了键和值的数组。糟糕的形式。但是+1用于使用herdoc语法^^^这对问题有什么影响:)它可能有助于s/t,因为这是目前考虑标记的唯一答案。尚不清楚OP是要拆分包含标签还是独占标签。但是我当然同意分割部分不是,我要做的^^^我不需要运行代码,我可以确切地告诉(正如我之前所说)你最终会得到什么。谁想通过交替的数值来检索它们的值?看来你在为程序员做更多的工作$array['lon']
比$array[11]
容易得多,除非你能记住每个数字代表什么。我要再次重申,这从来都不是一个更好的方法。也许你应该澄清一下,你的意思是字符串包含所有显示的文本,包括标记,还是只包含标记内的内部文本,因为有些人考虑了标记,有些人没有。来吧。用你文章的标题我得到了一个答案。同样,回去接受以前的一些答案,或者停止问他们。
<?php
$str = "Source: Web | Pics: 1 | Frame: 2 | Date: 4-25-2011 | On: App | Lat: 51.2222 | Lon: 7.6555";
$arr = explode(" | ", $str);
foreach ($arr as $item){
$arr2 = explode(": ", $item);
$finalArray[$arr2[0]]=$arr2[1];
}
print_r($finalArray);
?>
Array
(
[Source] => Web
[Pics] => 1
[Frame] => 2
[Date] => 4-25-2011
[On] => App
[Lat] => 51.2222
[Lon] => 7.6555
)
echo $finalArray['Lon']; //yields '7.6555'
$val =<<<END
<cap>
Source: Web | Pics: 1 | Frame: 2 | Date: 4-25-2011 | On: App | Lat: 51.2222 | Lon: 7.6555
</cap>
END;
$bits = split("[:|]", $val);
$lat = trim($bits[11]);
$lon = trim($bits[13]);
$str = 'Source: Web | Pics: 1 | Frame: 2 | Date: 4-25-2011 | On: App | Lat: 51.2222 | Lon: 7.6555';
preg_match( sprintf( '~%s~', implode(array_map( function($val){ if ($val) return sprintf( '%1$s:\s(?P<%1$s>.*?)(?:(?:\s\|\s)|(?:$))', $val ); }, preg_split( '~:.*?(?:(?:\s\|\s)|(?:$))~', $str ) ) ) ), $str, $m );
print_r($m);
Array
(
[Source] => Web
[Pics] => 1
[Frame] => 2
[Date] => 4-25-2011
[On] => App
[Lat] => 51.2222
[Lon] => 7.6555
)