我有这样的字符串[1] Name : Bro Jhon<br>[2] Name : Japar S
如何获取Bro Jhon
和Japar S
并回复它?
到目前为止我尝试了什么
$op = preg_match_all("/Name: (.*?)<br>/g",$x);
答案 0 :(得分:1)
试试这个:
<?php
$subject = str_replace('<br>', "\n", '[1] Name : Bro Jhon<br>[2] Name : Japar S');
preg_match_all('/Name\s*:\s*(.*)/', $subject, $tokens);
print_r($tokens[1]);
输出显然是:
Array
(
[0] => Bro Jhon
[1] => Japar S
)
答案 1 :(得分:0)
您需要将正则表达式更新为
Name\s*:\s*(.*?)(?=\<br\>|$)
正则表达式的问题如下
Name: (.*?)<br>
space
和Name
之间有:
。 Name :
即Name:
您的正则表达式正在寻找space
,即没有<br>
end of string
之前,而不是g
warning
修饰符,也不会将preg_match
投放到同一boolean
返回assign third parameter
中的值,以便获得preg_match_all("/Name\s*:\s*(.*?)(?=\<br\>|$)/",$str,$n);
print_r($n[1]);
所需的匹配。所以你的PHP代码看起来像
{{1}}
答案 2 :(得分:0)
您可以尝试拆分整个字符串。 类似的东西:
<?
$str = "[1] Name : Bro Jhon<br>[2] Name : Japar S";
//splits for each <br>
$splitted_values = split("<br>", $str);
//on each splitted string
foreach($splitted in $splitted_values){
//we obtainwhete the : is
$pos = strpos(":", $splitted);
//the we remove from left to right
$name = substr($splitted, $pos);
//some spaces are removed also
$name = trim(name);
//finally the echo
echo $name;
}
?>
另外,你可以写一个正则表达式。
答案 3 :(得分:0)
我们可以提取这样的词,对不起,我很难恢复功能。我希望这会对你有帮助。
function getWord_between($string, $start, $end){
$string = ' ' . $string;
$ini = strpos($string, $start);
if ($ini == 0) return '';
$ini += strlen($start);
$len = strpos($string, $end, $ini) - $ini;
return substr($string, $ini, $len);
}
$fullstring = '[1] Name : Bro Jhon<br>[2] Name : Japar S';
$parsed = getWord_between($orgstring, 'Name :', '<br>');
echo $parsed;