[英]extract string within a string php
所以我有这个脚本在更大的字符串中提取给定的字符串:
function get_string($string, $start, $end){
$string = " ".$string;
$pos = strpos($string,$start);
if ($pos == 0) return "";
$pos += strlen($start);
$len = strpos($string,$end,$pos) - $pos;
return substr($string,$pos,$len);
}
所以这是字符串:
$string= '<b>Sample Sample</b> <b>Sample2 Sample2</b>';
$output = get_string($string, '<b>','</b>');
echo $output;
我真的想要一些帮助,因为我没有想法。 现在,当我回复$output
我得到了
Sample Sample
我想做一个可以显示两者的变化:
Sample Sample
Sample2 Sample2
你们有没有想法如何修改函数并使其输出结果数组$output[0]
, $output[1]
?
提前谢谢你,祝你有个美好的一天。
您可能会发现这更简单,更容易理解:
function get_string($string, $start, $end) {
$start = preg_quote($start, '|');
$end = preg_quote($end, '|');
$matches = preg_match_all('|'.$start.'([^<]*)'.$end.'|i', $string, $output);
return $matches > 0
? $output[1]
: array();
}
$string= '<b>Sample Sample</b> <b>Sample2 Sample2</b>';
$output = get_string($string, '<b>', '</b>');
print_r($output);
哪个输出:
Array
(
[0] => Sample Sample
[1] => Sample2 Sample2
)
修改你的函数,这样只要while
,该函数给你一个字符串,将它添加到一个数组,然后再次使用字符串的结尾运行该函数。
编辑:
如果您碰巧想要尝试自己,不想拼出正确的解决方案。 这是一种方法,可以实现您的需求。 我尝试尽可能少地修改原帖:
function get_string($string, $start, $end){
$found = array();
$pos = 0;
while( true )
{
$pos = strpos($string, $start, $pos);
if ($pos === false) { // Zero is not exactly equal to false...
return $found;
}
$pos += strlen($start);
$len = strpos($string, $end, $pos) - $pos;
$found[] = substr($string, $pos, $len);
}
}
$string = '<b>Sample Sample</b> <b>Sample2 Sample2</b>';
$output = get_string($string, '<b>','</b>');
var_dump( $output );
输出:
array(2) {
[0]=>
string(13) "Sample Sample"
[1]=>
string(15) "Sample2 Sample2"
}
查看上面的示例,字符串包含b标记,这些标记是HTML标记。
PHP库有一个定义了名称为strip_tags的函数,它将从字符串中删除HTML标记。
因此,您的输出字符串将生成带有纯文本的字符串,并从字符串中删除所有HTML标记。
我讨厌必须使用正则表达式,所以这里是一个非英国媒体报道的版本:
function get_string($string, $start, $end){
$results = array();
$pos = 0;
do {
$pos = strpos($string,$start,$pos);
if($pos === FALSE) break;
$pos += strlen($start);
$len = strpos($string,$end,$pos) - $pos;
$results[] = substr($string,$pos,$len);
$pos = $pos + $len;
} while(1);
return $results;
}
$string= '<b>Sample Sample</b> <b>Sample2 Sample2</b>';
$output = get_string($string, '<b>','</b>');
var_dump($output);
输出:
array(2) { [0]=> string(13) "Sample Sample" [1]=> string(15) "Sample2 Sample2" }
这可以帮助......
function get_string($string, $start, $end = null) {
$str = "";
if ($end == null) {
$end = strlen($string);
}
if ($end < $start) {
return $string;
}
while ($start < $end) {
$str .=$string[$start];
$start++;
}
return $str;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.