查找字符串的一部分并输出整个字符串

时间:2016-06-29 13:07:51

标签: php string strpos

我想查找字符串的一部分,如果true我想要输出它找到的整个字符串。

以下是一个例子:

$Towns = "Eccleston, Aberdeen, Glasgow";
$Find = "Eccle";

if(strstr($Find, $Towns)){
    echo outputWholeString($Find, $Towns); // Result: Eccleston.
}

如果有人能够阐明如何做到这一点,并且记住它不会是静态值;我的实时脚本会动态分配$Towns$Find变量。

6 个答案:

答案 0 :(得分:4)

使用strpos()$Towns = "Eccleston, Aberdeen, Glasgow"; $data=explode(",",$Towns);// $Find = "Eccle"; foreach ($data as $town) if (strpos($town, $Find) !== false) { echo $town; } 作为

{{1}}

DEMO

答案 1 :(得分:0)

你快到了......

这可能就是你要找的东西:

<?php
$Towns = "Eccleston, Aberdeen, Glasgow";
$Find = "Eccle";

if(stripos($Towns, $Find)) {
    echo $Towns;
}

输出为:Eccleston, Aberdeen, Glasgow这就是我所说的“整个字符串”。

但是,如果您只想输出“整个字符串”的部分匹配部分,那么请查看该示例:

<?php
$Towns = "Eccleston, Aberdeen, Glasgow";
$Find = "Eccle";

foreach (explode(',', $Towns) as $Town) {
    if(stripos($Town, $Find)) {
        echo trim($Town);
    }
}

显然的输出是:Eccleston ...

两个一般性评论:

  1. strpos() / stripos()函数在这里更适合,因为它们只返回一个位置而不是整个匹配的字符串,这足以满足给定的目的。

  2. 使用stripos()代替strpos()执行不区分大小写的搜索,这可能对任务有意义...

答案 2 :(得分:0)

使用preg_match(),可以搜索Eccle并返回Eccleston字词。

我在下面的代码中使用了Pearl兼容正则表达式(PCRE)'#\w*' . $Find . '\w*#'demo代码。

#个字符是PCRE分隔符。搜索的模式位于这些分隔符内。有些人更喜欢/作为分隔符 \w表示字符 *表示前一个字符的重复次数为0或更多 因此,#\w*Eccle\w*# PCRE会搜索包含Eccle的字符串,其中包含一个或多个字符(字母

<?php
$Towns = "Eccleston, Aberdeen, Glasgow";
$Find = "Eccle";

if (preg_match('#\w*' . $Find . '\w*#', $Towns, $matches)) {
    print_r($matches[0]);
}
?>

正在运行代码:http://sandbox.onlinephpfunctions.com/code/4e4026cbbd93deaf8fef0365a7bc6cf6eacc2014

注意:'#\w*' . $Find . '\w*#'"#\w*$Find\w*#"相同(请注意周围的单引号或双引号)。请参阅this

答案 3 :(得分:0)

您必须使用strpos()在另一个字符串中搜索字符串:

/wp-json/wp/v2/posts?orderby ??

请注意,您必须使用&#34; ===&#34;知道strpos()是返回false还是0。

答案 4 :(得分:0)

使用preg_match函数的解决方案:

$Towns = "Eccleston, Aberdeen, Glasgow";
$Find = "Eccle";

preg_match("/\b\w*?$Find\w*?\b/", $Towns, $match);
$result = (!empty($match))? $match[0] : "";

print_r($result);   // "Eccleston"

答案 5 :(得分:0)

假设你总是将$ Towns用“,”分隔,那么你可以做这样的事情

$Towns = "Eccleston, Aberdeen, Glasgow";
$Find = "Eccle";    
$TownsArray = explode(", ", $Towns);

    foreach($TownsArray as $Town)
    {
       if(stristr($Find, $Town))
       { 
          echo $Town; break;
       }
    }

上面的代码会在找到针头并退出foreach循环后输出Town。你可以删除“休息”;继续让脚本运行以查看是否找到更多结果。