微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查设置在php字符串中的被调用字符串?

我正在寻找调用多个字符串并将它们连接成一个字符串.我希望能够检查所有被调用的字符串是否都已设置,而不必使用isset();.每个使用的字符串.

我理想地希望拥有:

<?PHP

$name      = "John Smith";
$age       = "106";
$favAnimal = "pig";
$email     = "john@smith.com";
$sport     = "tennis";

$userDescription = "My name is $name, I am $age years old, I like $sport.";

if(allStringsSet($userDescription)){
    echo $userDescription; //Or do something else
}

?>

您会注意到,我没有调用所有字符串,因为在我的应用程序中,并非所有字符串都会一直使用.我的应用程序还将从大约50个字符串中进行选择,而我需要能够检查是否有任何setset,而不会到处都是isset(); s.

我希望在声明$userDescription之前需要进行isset检查.如何检查一组未知的字符串以查看是否已设置?

解决方法:

使用带有自定义getter和setter的对象.

class CustomStrings()
{
    protected $data;

    public function __set($key, $value) {
        $this->data[$key] = $value;
    }

    public function __get($key) {
        if (isset($data[$key])) {
            return $data[$key];
        }
        return false;
    }

    public function getDescription($description) {
        // regex to find the words following : (or any other char)
        // look for the variables, and do whatever handling you want if they're not found
        // return whatever you want 
        // IF you don't want to do a regex, you can do the following
        foreach ($this->data as $key => $value) {
            $description = str_replace(":$key", $value, $description);
        }
        if (strpos(':', $description) !== FALSE) {
            return $description;
        }
        return false; // or whatever error handling you want
    }
}

$strings = new CustomStrings();
$strings->name = 'John';
$strings->age = 16;
$strings->sport = 'Football';

$description = $strings->getDescription("My name is :name, I am :age years old, I like :sport");

您将使用适当的键将所有变量存储在CustomStrings对象中,而不是写入$name,而是写入:name.

您只能在getDescription函数中执行一次isset处理.

因为我很懒,所以我没有写正则表达式.如果要在字符串中使用:,请将其替换为不需要的内容.

祝好运!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐