我想查找字符串的一部分,如果true
我想要输出它找到的整个字符串。
以下是一个例子:
$Towns = "Eccleston, Aberdeen, Glasgow";
$Find = "Eccle";
if(strstr($Find, $Towns)){
echo outputWholeString($Find, $Towns); // Result: Eccleston.
}
如果有人能够阐明如何做到这一点,并且记住它不会是静态值;我的实时脚本会动态分配$Towns
和$Find
变量。
答案 0 :(得分:4)
使用strpos()
和$Towns = "Eccleston, Aberdeen, Glasgow";
$data=explode(",",$Towns);//
$Find = "Eccle";
foreach ($data as $town)
if (strpos($town, $Find) !== false) {
echo $town;
}
作为
{{1}}
答案 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
...
两个一般性评论:
strpos()
/ stripos()
函数在这里更适合,因为它们只返回一个位置而不是整个匹配的字符串,这足以满足给定的目的。
使用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。你可以删除“休息”;继续让脚本运行以查看是否找到更多结果。