הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בדיקה האם האותיות גדולות בPHP (https://hosts.co.il/forums/showthread.php?t=95194)

Megnum 31-01-12 17:06

בדיקה האם האותיות גדולות בPHP
 
שלום :)
רציתי לדעת איך אני יכול לעשות תנאי שיבדוק אם המחרוזת שלי היא עם אותיות גדולות או להיפך?

אני רוצה לדעת למשל אם "i have a dog" המחרוזת היא משפט של אותיות גדולות אם לא
אז אני הופך אותה לאותיות גדולות עם strtoupper

תודה מקווה שהבנתם :)

אדיר 31-01-12 17:11

אתה יכול להשתמש ב ctype_upper, אתה יכול להשוות את הערך המקורי לאחר שבוצע עליו strtoupper, ואתה יכול לעשות strtoupper מלכתחילה בלי שום בדיקה אם בכל מקרה אתה רוצה שהכל יהיה באותיות גדולות.

Haimz 31-01-12 17:34

PHP קוד:

if( strtoupper($string) == $string )
{
    
$string strtoupper($string);


אבל האמת שזה מיותר, אתה יכול ישר להשתמש בפונקצייה strtoupper .

אדיר 31-01-12 17:43

הבדיקה שלך לא נכונה,
הוא צריך שזה לא יהיה שווה, אם זה שווה משמע שהכל כבר UPPERCASE מלכתחילה.

בכל מקרה כבר הבאתי לו את שלושת הדרכים הסטנדרטיות לעשות את זה,
כמו שציינתי גם לדעתי אם הוא בכל מקרה הולך להפוך את זה ל- UC התנאי מיותר.

NetanelEdri 31-01-12 20:52

הוא ביקש לדעת אם במחרוזת קיימות אותיות גדולות לא כל המחרוזת באותיות גדולות.
אפשר לעשות משהו כזה

PHP קוד:

$string "My name is Netanel Edri";
$uppercase_count 0;
for(
$i 0$i strlen($string); $i++)
{
    
$uppercase_count += (ctype_upper($string[$i])) ? 0;


עכשיו יש לך משתנה שאתה בודק אם הוא גדול מ 0 , במידה וכן בעצם יש אותיות גדולות במחרוזת ואתה אפילו תדע כמה (זה הערך שלו).

Haimz 31-01-12 23:02

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 833856)
הבדיקה שלך לא נכונה,
הוא צריך שזה לא יהיה שווה, אם זה שווה משמע שהכל כבר UPPERCASE מלכתחילה.

בכל מקרה כבר הבאתי לו את שלושת הדרכים הסטנדרטיות לעשות את זה,
כמו שציינתי גם לדעתי אם הוא בכל מקרה הולך להפוך את זה ל- UC התנאי מיותר.

הבדיקה שלי כן נכונה (וברור שהיא לא שימושית, אך לא הבנתי אותו ..)

--------------

בלי להסתבך יותר מדי, שימוש פשוט בregex
(דרך אגב נתנאל, אפשר ורצוי לעצור את הלולאה בבדיקה)
PHP קוד:

<?php
    $string 
'My name is Haim';
    
preg_match_all('/[A-Z]/'$string$matches);
    
$count count($matches[0]);
?>

ובשביל לבדוק, הערך של $count יהיה אפסי אם לא יהיו אותיות גדולות במשפט.

SniR-S 31-01-12 23:09

למה לסבך את העניינים? אפשר לעשות את זה עם preg_match הכי פשוט והכי יעיל.
PHP קוד:

$value 'aaaS DSDSD 1122';

if (
preg_match("/[A-Z]/"$value)) {
    echo 
'The uppercase was found!';
} else {
    echo 
'The uppercase was not found!';


כנ"ל לגבי אותיות קטנות, במקום A-Z אתה עושה a-z (לצורך ידע כללי, למרות שאין לך צורך להשתמש בזה)

NetanelEdri 01-02-12 00:05

לא כל כך מהותי בבדיקה כזו לעצור את הלולאה , בכל מקרה הפתרון שלי וגם עם REGEX שניהם יעבדו אותו דבר.
ד"א בפתרון שלי הוא יכול לקבל את מספר המופעים של אות גדולה שאולי זה יכול לשמש אותו בפעולה שהוא עושה.

Haimz 01-02-12 18:53

למה לא? מה הטעם להמשיך אותו, אם הסטרינג הוא עם 1500 תווים ובתו השני נמצאה אות גדולה, הוא סתם יעבור את כל האותיות ..
כנ"ל, גם בREGEX ,זה השימוש ב preg match all

אדיר 01-02-12 19:27

בואו נעשה כאן קצת סדר..

חיים:
הבדיקה שלך לא נכונה, לא אחזור שוב על הסיבה, אתה יכול לבדוק בעצמך.

נתנאל:
זה לא משנה מה הוא ביקש, מה שמשנה זה להבין מה הוא רוצה לעשות.
בן אדם שלא מבין בתחום מסויים יכול לבקש משהו בצורה ממש לא נכונה או לפחות לא ממש מובנת ואתה בתור בן אדם שכן מבין צריך לכוון אותו להוציא ממנו מה בדיוק הוא רוצה.
בקשר לקוד שהבאת - אין סיבה שלא לעצור את הלולאה, לפי מה שהוא ציין הוא לא רוצה לדעת כמה תווים כאלו יש והמשך הלולאה תגרום לבזבוז משאבים וזמן ריצה לשווא.

שניר:
בדיקה באמצעות REGEX היא הכי פשוטה והכי יעילה?
אז אולי פשוטה, אפשר להבין כאשר מדובר על הבדיקה הספציפית הזאת.
אבל איך בדיוק יעילה? משפטים רגולריים זה דבר שרצוי להימנע ממנו כל קיימת תחלופה אחרת טובה יותר (ובמקרה הזה בהחלט סביר שקיימת).


לפני שממשיכים לקפוץ כאן בואו נחכה לתגובה של פותח האשכול ונבין מה בדיוק הוא רוצה לעשות.
לצורך העניין אם הוא מצפה לקלט שכולו באותיות גדולות ואם הוא לא כזה הוא רוצה להפוך אותו לכזה,
שום דבר ממה שהבאתם לא הכרחי ועדיף להריץ strtoupper מלכתחילה וזהו.


כל הזמנים הם GMT +2. הזמן כעת הוא 06:45.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ