কোনও স্ট্রিং ফাঁকা আছে কিনা তা পরীক্ষা করে কেন সবসময় সত্য হয়? [বন্ধ]


231

আমার একটি ফাংশন নটএম্পটি রয়েছে যা স্ট্রিংটি খালি না হলে মিথ্যাটি সত্য এবং মিথ্যাটি সত্য হয় যদি স্ট্রিংটি খালি থাকে। আমি খুঁজে পেয়েছি যে আমি এটির মাধ্যমে খালি স্ট্রিংটি পাস করলে এটি কাজ করছে না।

function isNotEmpty($input) 
{
    $strTemp = $input;
    $strTemp = trim($strTemp);

    if(strTemp != '') //Also tried this "if(strlen($strTemp) > 0)"
    {
         return true;
    }

    return false;
}

IsNotEmpty ব্যবহার করে স্ট্রিংয়ের বৈধতা সম্পন্ন হয়েছে:

if(isNotEmpty($userinput['phoneNumber']))
{
    //validate the phone number
}
else
{
    echo "Phone number not entered<br/>";
}

যদি স্ট্রিংটি ফাঁকা থাকে অন্যথায় চালিত হয় না, তবে আমি বুঝতে পারি না কেন, কেউ দয়া করে এই বিষয়ে কিছু আলোকপাত করতে পারেন।


55
কেবলমাত্র একটি পরামর্শ: অবহেলিত নামগুলি সহ ফাংশনগুলি ব্যবহার করা সাধারণত একটি খারাপ অভ্যাস। এম্পটি ($ ইনপুট) ফাংশনটি বেশি পঠনযোগ্য, অন্যথায় আপনি এটি এটিকে ডাকতে পারেন: যদি (! IsNotEmpty ($ x)) ... অন্যদিকে, isNotEmpty () এবং (!Empty ()) হয় না যে ভিন্ন। YMMV।
jhndodo

1
অবহেলিত নাম ব্যতীত একই ফাংশনটি রাখা, সম্ভবত হ্যাশ কনটেন্ট () এর মতো কিছু।
ওসাকা ওয়েবি

যে ডিফেন্সেন্ট @ জোহানডো
কোডরেচেট

এটি নির্ধারিত একটি অফ-বিষয়: টাইপ প্রশ্ন।
মিকম্যাকুসা

উত্তর:


320

সাধারণ সমস্যা। পরিবর্তন:

if (strTemp != '')

প্রতি

if ($strTemp != '')

অবশ্যই আপনি এটি এটিকে পরিবর্তন করতে চাইতে পারেন:

if ($strTemp !== '')

যেহেতু != ''আপনি পিএইচপি-র স্বয়ংক্রিয় ধরণের রূপান্তরজনিত কারণে সংখ্যাসূচক 0 এবং কয়েকটি অন্যান্য ক্ষেত্রে পাস করেন তা সত্য হবে ।

এর জন্য আপনাকে বিল্ট-ইন খালি () ফাংশনটি ব্যবহার করা উচিত নয় ; মন্তব্য এবং পিএইচপি টাইপ তুলনা টেবিল দেখুন


4
যুক্তিযুক্তভাবে, if টি এতে পরিবর্তন করুন: $ strTemp! == '';
স্ট্র্যাজার

12
আপনি খালি () ব্যবহার করতে চান না। স্পেসগুলির একটি স্ট্রিং বিবেচনা করুন: $ x = ""; , var_dump (খালি ($ x) এর!); / * (সত্য) / var_dump (isNotEmpty ($ x)); / (মিথ্যা) * /
নিকফ

5
ওপি স্ট্রিংটি ছাঁটাই করছে। এই ক্ষেত্রে এটি উপযুক্ত।
ক্লিটাস

8
@ ক্লেটাস: তারপরে একটি স্ট্রিং consider s = '0' বিবেচনা করুন। আপনি যদি খালি ($ গুলি) কল করেন তবে এটি সত্যের কাছে মূল্যায়ন করবে (স্বজ্ঞাত ইমো নয়, তবে এটি তাই)।
jhndodo

28
খালি ব্যবহার করবেন না ()! খালি () '0' এর মতো মানগুলির জন্য সত্য ফিরে আসবে। Php.net/manual/en/tyype.comparisons.php দেখুন
স্কট টেসলার

27

পিএইচপি এর একটি বিল্ট ইন ফাংশন থাকে empty() যা টেস্ট বলে if(empty($string)){...} রেফারেন্স পিএইচপিএন: পিএইচপি খালি টাইপ করে সম্পন্ন হয়


4
ক্লিটাস থেকে গৃহীত উত্তরের শেষে ইতিমধ্যে খালি রেফারেন্স। পাশাপাশি দেখুন যে এই প্রশ্ন এবং উত্তর থ্রেড এপ্রিল ২০০৯ এর থেকে। যাইহোক আপনার ইনপুটটির জন্য ধন্যবাদ। আমি আপনাকে প্রথম উত্তরের জন্য একটি +1 দিচ্ছি।
রেজিলিও

64
খালি ব্যবহার করবেন না ()! খালি () '0' এর মতো মানগুলির জন্য সত্য ফিরে আসবে। Php.net/manual/en/tyype.comparisons.php
স্কট টেসলার

3
@ স্কটড্যাভিডটেলার এই স্ট্রিংটি যদি "0" হয় তবে তা কি সত্য হবে? বা শুধুমাত্র যদি এটি পূর্ণসংখ্যা 0 হয়?
টমাস জুবিরি

5
@ টমাসজুবিরি হ্যাঁ, "0" ধারণকারী একটি স্ট্রিং সত্য ফিরে আসবে।
মাইকেল সানড

3
অনুগ্রহ করে অন্য কেউ এই ভুল উত্তরটিকে সমর্থন করেন না - উপরের মন্তব্যগুলি পড়ুন!
নির্মাতা স্টিভ

24

আমি সিজিআই / পার্ল দিনের সাথে ফিরে এবং জাভাস্ক্রিপ্টের সাথে খালি স্ট্রিং চেক করার জন্য একটি নিয়মিত অভিব্যক্তি ব্যবহার করি, তাই পিএইচপি-র সাথে কেন নয়, যেমন (অনির্ধারিত হওয়া সত্ত্বেও)

return preg_match('/\S/', $input);

যেখানে \ এস কোনও অ-শ্বেতস্থান চরিত্রের প্রতিনিধিত্ব করে


1
এখানে এটিই একমাত্র সমাধান যা শূন্যকে খালি স্ট্রিংয়ের সমান বলে মনে করে না!
ম্যাথু লক

1
শীতল সমাধান। পার্শ্ব নোট হিসাবে, stackoverflow.com/a/4544642/5411817 উল্লেখ করেছে: ডিফল্টরূপে .নতুন লাইনের সাথে মেলে না - [\s\S]এটি এই সমস্যাটিকে ঘিরে একটি হ্যাক is এটি জাভাস্ক্রিপ্টে সাধারণ, তবে পিএইচপি-তে আপনি /sপতাকাটি সমস্ত অক্ষরের সাথে মেলে তৈরি করতে ব্যবহার করতে পারেন । আর stackoverflow.com/a/4544646/5411817 উল্লেখ: (?s)সক্রিয় sএবং মোড (?-s)পালাক্রমে যদি বন্ধ। একবার বন্ধ হয়ে গেলে কোনও নিম্নলিখিত .লাইন কোনও নতুন লাইনের সাথে মেলে না। আপনি যদি রিজেস পতাকা হিসাবে পরিবর্তে ইনলাইনটি (অফ রেজেক্সের ভিতরে এম্বেড করা) অন / অফ করতে চান তবে।
শেরিলহোমান

19

ifফাংশনে আপনার ধারাটিতে আপনি এমন একটি পরিবর্তনশীলকে উল্লেখ করছেন যা strTempবিদ্যমান নেই। $strTempযদিও আছে।

কিন্তু পিএইচপি ইতিমধ্যে একটি empty()ফাংশন উপলব্ধ আছে; কেন নিজের তৈরি?

if (empty($str))
    /* String is empty */
else
    /* Not empty */

পিএইচপি.net থেকে:

রিটার্ন মান

ভের যদি শূন্য ও শূন্য-না মান হয় তবে FALSE প্রদান করে।

নিম্নলিখিত জিনিসগুলি খালি মনে করা হয়:

* "" (an empty string)
* 0 (0 as an integer)
* "0" (0 as a string)
* NULL
* FALSE
* array() (an empty array)
* var $var; (a variable declared, but without a value in a class)

http://www.php.net/empty


11
সমস্ত বাস্তবায়ন "0" খালি হিসাবে মূল্যায়ন করা চাইবে না। এবং যদি সে এটি চেয়েছিল, তবে তিনি (ই) (x) তুলনা যেমন ইফ (! ট্রিম ($ স্ট্র)) ব্যবহার করতে পারবেন না?
ক্যালভিন

1
মনে রাখবেন যে $ tmpStr! = '' করলে $ tmpStr 0 বা মিথ্যা বা অন্য কোনও খালি / মিথ্যা মান ধারণ করে true
পিম জাগার

5
আপনার সংস্করণটি আসলে কাজ করবে না: ভেরিয়েবলগুলিতে খালি কাজ করে, এক্সপ্রেশনগুলিতে নয়।
জ্বালাতন

13

পিএইচপি একটি খালি স্ট্রিংটিকে মিথ্যা হিসাবে মূল্যায়ন করে, তাই আপনি সহজভাবে ব্যবহার করতে পারেন:

if (trim($userinput['phoneNumber'])) {
  // validate the phone number
} else {
  echo "Phone number not entered<br/>";
}

9
আপনি 0 পাস করার আগ পর্যন্ত এটি দুর্দান্ত কাজ করে Otherwise নইলে ধারণাটি দুর্দান্ত, আমি এটি এটি অন্য কোনও জায়গায় করব। আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ.
bgosalci

10

শুধু strlen () ফাংশন ব্যবহার করুন

if (strlen($s)) {
   // not empty
}

1
এটি পিএইচপি কীভাবে স্ট্রেন () ফাংশন প্রয়োগ করে তার উপর নির্ভর করে। উদাহরণস্বরূপ, ডেলফিতে, স্ট্রিংটি তার দৈর্ঘ্য বিয়োগ 4 বাইট অফসেটটি সঞ্চয় করে ফেলেছে, সুতরাং এর দৈর্ঘ্য পরীক্ষা করা তুচ্ছ।
ডক্টরলই

5
টাইপ না সেভ। Php 5.3ফাংশনটি টাইপের 5হলে ফিরে আসার আগে । একটি ব্যতিক্রম উত্থাপন হবে। আমি ব্যবহার করার পরামর্শ দিচ্ছি । শুধু পড়ার উদ্দেশ্যে। $sarrayPhp > 5.3is_string($s) && str_len($s) > 0>0
ম্যাজিক_াল

5

আমি শুধু আমার নিজের ফাংশন লিখুন, is_string টাইপ পরীক্ষণের জন্য এবং strlen দৈর্ঘ্য বার করো।

function emptyStr($str) {
    return is_string($str) && strlen($str) === 0;
}

print emptyStr('') ? "empty" : "not empty";
// empty

এখানে একটি ছোট পরীক্ষা repl.it

সম্পাদনা: স্ট্রিংটি ফাঁকা থাকলে পরীক্ষার জন্য আপনি ট্রিম ফাংশনটিও ব্যবহার করতে পারেন।

is_string($str) && strlen(trim($str)) === 0;    

1

আমার পিএইচপি এবং ব্যবহৃত একটি খালি ক্ষেতের জন্য পরীক্ষা করা প্রয়োজন

ctype_space($tempVariable)

যা আমার পক্ষে ভাল কাজ করেছে।


এটি একটি পৃথক প্রশ্নের সঠিক উত্তর। এই উত্তরটি স্ট্রিং খালি কিনা তা পরীক্ষা করে না।
মিকম্যাকুসা

0

আচ্ছা, এখানে স্ট্রিংটি খালি কিনা তা যাচাই করার জন্য একটি ছোট পদ্ধতি is

$input; //Assuming to be the string


if(strlen($input)==0){
return false;//if the string is empty
}
else{
return true; //if the string is not empty
}

strlen()এই পৃষ্ঠায় 2014 এ পরীক্ষা করার প্রস্তাব দেওয়া হয়েছিল। আপনার উত্তর কোন নতুন মান যোগ করে।
মিকম্যাকুসা

0

আপনি কেবল বুল করতে পারেন, শূন্য হ্যান্ডেল করতে ভুলবেন না।

function isEmpty(string $string): bool {
    if($string === '0') {
        return false;
    }
    return !(bool)$string;
}

var_dump(isEmpty('')); // bool(true)
var_dump(isEmpty('foo')); // bool(false)
var_dump(isEmpty('0')); // bool(false)

(bool)$strকরছেন হিসাবে একই !empty($str), এবং একই সমস্যা হয়েছে '0'পিএইচপি বুলিয়ান্স পড়ুন , বিভাগটি "বুলিয়ানে রূপান্তর করা"। এছাড়াও, আপনি এটি পিছনের দিকে পেয়েছেন - হওয়া উচিত !(bool)$string'। বা আপনার ফাংশনটির নাম "isNotEmpty" রাখা উচিত। নির্বিশেষে, আপনি '0' এর ভুল পরিচালনা নিয়ে আটকে আছেন।
টুলমেকারস্টেভ

@ টুলমেকারস্টেভ সমস্যার জন্য জাস্ট 0স্ট্রিং ফিরে আসার আগে কেবল এটি পরিচালনা করুন handle এবং অনেক ধন্যবাদ, আমি !প্রত্যাখ্যান ভুলে গেছি (অবহেলিত ফাংশন নামগুলি খারাপ অভ্যাস)। আমার পোস্ট সম্পাদনা।
ফ্যাবিয়ান পিকন

-1

আমি জানি এই থ্রেডটি বেশ পুরানো হয়েছে তবে আমি কেবল আমার একটি ফাংশন ভাগ করে নিতে চেয়েছিলাম। নীচের এই ফাংশনটি খালি স্ট্রিং, সর্বোচ্চ দৈর্ঘ্য, ন্যূনতম দৈর্ঘ্য বা সঠিক দৈর্ঘ্যের স্ট্রিং পরীক্ষা করতে পারে। আপনি যদি খালি স্ট্রিংগুলি পরীক্ষা করতে চান তবে কেবল $ min_len এবং $ সর্বোচ্চ_লেন 0 হিসাবে রাখুন।

function chk_str( $input, $min_len = null, $max_len = null ){

    if ( !is_int($min_len) && $min_len !== null ) throw new Exception('chk_str(): $min_len must be an integer or a null value.');
    if ( !is_int($max_len) && $max_len !== null ) throw new Exception('chk_str(): $max_len must be an integer or a null value.'); 

    if ( $min_len !== null && $max_len !== null ){
         if ( $min_len > $max_len ) throw new Exception('chk_str(): $min_len can\'t be larger than $max_len.');
    }

    if ( !is_string( $input ) ) {
        return false;
    } else {
        $output = true;
    }

    if ( $min_len !== null ){
        if ( strlen($input) < $min_len ) $output = false;
    }

    if ( $max_len !== null ){
        if ( strlen($input) > $max_len ) $output = false;
    }

    return $output;
}

-2

সম্ভবত আপনি এটি চেষ্টা করতে পারেন

if(isNotEmpty($userinput['phoneNumber']) == true)

এটি পিএইচপি কনফিগারেশনের কারণে পিএইচপি


-2

আপনার যদি সিরিয়াল_ নাম্বার নামে একটি ক্ষেত্র থাকে এবং খালি চেক করতে চান

$serial_number = trim($_POST[serial_number]);
$q="select * from product where user_id='$_SESSION[id]'";
$rs=mysql_query($q);
while($row=mysql_fetch_assoc($rs)){
if(empty($_POST['irons'])){
$irons=$row['product1'];
}

এইভাবে আপনি অন্য খালি ফাংশন সহ লুপের সমস্ত ফাইলগুলি চেক করতে পারেন


empty()ইতিমধ্যে 2009 এ ফিরে এই পৃষ্ঠায় সুপারিশ করা হয়েছিল।
মিকম্যাকুসা

-2

এটি হ'ল সংক্ষিপ্ত এবং কার্যকর সমাধান, ঠিক আপনি যা খুঁজছেন:

return $input > null ? 'not empty' : 'empty' ;

এটি কাজ করে কিনা তা আমি পরীক্ষা করে দেখিনি, তবে এটি যদি হয় তবে এটি nullতুলনার জন্য খালি স্ট্রিংয়ে রূপান্তর করে। যা ক্ষেত্রে, এটা আপনি কি বলতে চাইছেন বলে অনেক পরিস্কার হবে: $input > ''। অর্থাৎ, "ইনপুট স্ট্রিং এবং একটি খালি স্ট্রিংয়ের মধ্যে একটি লেজিকাল তুলনা সম্পাদন করুন" অথবা প্রান্তে হোয়াইটস্পেস উপেক্ষা করার: trim($input) > ''
নির্মাতা স্টিভ 21

... কখন কী হয় তা পরীক্ষা $inputকরাও দরকার '0'। পিএইচপি একটি numericবা lexicalতুলনা করে কিনা তা পরিষ্কার নয় , যখন প্রথম যুক্তি সংখ্যার স্ট্রিং।
টুলমেকারস্টেভ

-3

আপনি একটি উত্তর পেয়েছেন তবে আপনার ক্ষেত্রে আপনি ব্যবহার করতে পারেন

return empty($input);

অথবা

return is_string($input);

5
এই জন্য ব্যর্থ হয়empty("0")
activatedgeek

2
@ জেকিডো - ভুল উত্তরকে নিম্নচাপ দেওয়া স্ট্যাকওভারফ্লো-এর একটি অংশ - এটি সেই উত্তরগুলিকে নিচে সরিয়ে দেয় এবং উত্তরদাতাদের তাদের উত্তর সংশোধন করতে, বা এটি সরাতে উত্সাহ দেয়। আপনার উত্তরটি দিয়ে কি ভুল বুঝতে পারছেন? 1. empty- এই উত্তরটি ইতিমধ্যে দেওয়া হয়ে গেছে, তাই এটি আবার বলার ফলে কোনওরকম অবদান নেই। সবচেয়ে খারাপ, মন্তব্যগুলিতে যেমন আলোচনা করা হয়েছে, এটি ভুল - এর সমমানের কোনও মানকে 0"খালি" বলে বিবেচনা করা হবে। ২. is_stringঅন্যভাবে ভুল - একটি খালি স্ট্রিং ''একটি স্ট্রিং, সুতরাং সেই ক্ষেত্রে সত্য ফিরে আসবে - প্রশ্ন জিজ্ঞাসা করে যা করতে ব্যর্থ।
টুলমেকারস্টেভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.