用php从数据中获取一些字符串?

时间:2016-06-06 06:32:58

标签: php

我有这样的字符串[1] Name : Bro Jhon<br>[2] Name : Japar S

如何获取Bro JhonJapar S并回复它?

到目前为止我尝试了什么

$op = preg_match_all("/Name: (.*?)<br>/g",$x);

4 个答案:

答案 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>
  • 在你的字符串中,spaceName之间有: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;