I need a function that returns the substring between two words (or two characters). I'm wondering whether there is a php function that achieves that. I do not want to think about regex (well, I could do one but really don't think it's the best way to go). Thinking of strpos and substr functions. Here's an example:

$string = "foo I wanna a cake foo";

We call the function: $substring = getInnerSubstring($string,"foo");
It returns: " I wanna a cake ".


Update:

$string =" foo I like php foo, but foo I also like asp foo, foo I feel hero  foo";

我得到一个像{"I like php", "I also like asp", "I feel hero"}的array.

推荐答案

如果字符串不同(即:[foo]&;[/foo]),请看贾斯汀·库克(Justin Cook)的this post. 我将他的代码复制到下面:

function get_string_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 = 'this is my [tag]dog[/tag]';
$parsed = get_string_between($fullstring, '[tag]', '[/tag]');

echo $parsed; // (result = dog)

Php相关问答推荐

Woocommerce将自定义数据添加到自定义文件中购物车中的产品

条纹 checkout :订阅试用版和额外付款(add_invoice_items)错误

FatFreeFramework上的不同路由

模型中的Laravel自定义查询字段

将变体设置字段添加到WooCommerce中的特定变量产品

如何在函数中定位WooCommerce产品循环

通过注册在Laravel中分配角色

Laravel Livewire如何在数组值上使用IF、ELSE条件

如何删除Foreach语句中的重复值?

中继器内置中继器的ACF WordPress组

为什么本地主机(Xampp)上的laravel运行速度比普通html站点慢?

Laravel:如何展平多维Eager 加载的集合

在Symfony 6.4中将工作流动态添加到服务

当配置的URL为空时禁用Laravel Slack日志(log)记录

dyld[45923]:未加载库:/usr/local/opt/libavif/lib/libavif.15dylib

单个产品页面 WooCommerce 订阅价格字符串的更改

为什么 php 只能在我的 Nginx Web 服务器的某些目录中工作?

Shopware 6 AuthControllerDecorator已弃用

PHP / DOM : 解析 HTML 以提取基于类的数​​据

php-http/discovery 插件 1.15.1 是否仍在使用自己的模块 destruct Contao 4.13 中的composer 安装?