לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #15  
ישן 01-05-2008, 21:59
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 5 שנכתבה על ידי PDP שמתחילה ב "זהו הקוד הכי קרוב שהצלחתי..."

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

1. ההגיון אומר שעליך לבצע כאן בדיוק מה שביצעת במקרים של סוף מילה.
ובשפת קוד:
קוד PHP:
 '/(\W|_)'.$word.'(\W|_)/i' 



2. תוכל להשתמש בביטוי שגרין רוברט סיפק ותחסוך לעצמך מספר תווים.
אגב, התו _ (קו תחתון) כלול בביטוי \w ובביטוי \W (כמובן שהלוכסן משמאל - קודם לאות, סדר התצוגה מתהפך בגלל השפה).

3. הרעיון של גרינברט לגבי מרווחים בין האותיות אכן הגיוני, ניתן אולי אף להרחיב את המרווחים לצורות שונות כגון כוכביות וכדומה ואת זה תוכל לבצע באמצעות הוספתם בין כל תו במשתנה ולאחמ"כ שרשור לביטוי הסופי.

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

נערך לאחרונה ע"י ישראל K בתאריך 01-05-2008 בשעה 22:09. סיבה: שגירת הקלדה
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 07-05-2008, 22:56
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 1 שנכתבה על ידי PDP שמתחילה ב "מילים אסורות - preg_replace"

ננסה להתחיל מהתחלה. קרי, ללא התבססות והמשך מאחד מהתחבירים הקודמים שהוצעו.
קוד PHP:
<?php

header
('Content-Type: text/plain');


$word 'sex';

echo 
$text 'word sex "Sex seX" "sex" sexy <br> -sex- -sex sex_ oversex sexo msex SEX >sex< word';
echo 
"\n";
echo 
$text2 'wordsex "Sex seX" "sex" sexy <br> -sex- -sex sex_ oversex sexo msex SEX >sex<word';
echo 
"\n";
echo 
$text3 'sex "Sex seX" "sex" sexy <br> -sex- -sex sex_ oversex sexo msex SEX >sex<';

echo 
"\n\n";
echo 
"\n".preg_replace('/(([^a-zא-ת\s]+|\b)'.$word.'([^a-zא-ת\s]+|\b))/i''|\\1|'$text);
echo 
"\n".preg_replace('/(([^a-zא-ת\s]+|\b)'.$word.'([^a-zא-ת\s]+|\b))/i''|\\1|'$text2);
echo 
"\n".preg_replace('/(([^a-zא-ת\s]+|\b)'.$word.'([^a-zא-ת\s]+|\b))/i''|\\1|'$text3);

?>


1. היות והשורות לא רציפות, הקוד לא מוצג כאן כ"כ טוב, תעתיק את זה לתוכנה בה אתה נעזר לכתיבת הקוד.
2. כפי שניתן לראות, בחרתי בשלוש מחרוזות דומות השונות ביניהן בתחילתן וסיומן, כדי לבדוק את כל המקרים, כולל מקרים בהם בתחילה או בסוף יש מילה אחרת, אין מילה כלל, מילה עם רווח וכדומה.
3. כמה מילים על הקוד:
א. כדי לפתור גם את המקרים שציינתי בסעיף הקודם, בחרתי לציין "או גבול של מילה" או תו שאינו תו עברי, אנגלי או רווח. - רצוי להשים לב שתו בשפה זרה לא יכתב ולכן זה לא כ"כ מתאים, נדרש להוסיף גם שפות אחרות או לשנות במעט את הביטוי.
ב. התו | משמש על מנת להקיף את המילים שצונזרו. בכוונה השארתי גם את המילים המקוריות, כדי שניתן יהיה לעקוב אחר המילים שהוחלפו (עדיף יהיה להשתמש בצבעים לצורך הענין, אך אני מעדיף בד"כ תצוגת מלל נקיה לצורך בדיקות).
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #19  
ישן 08-05-2008, 17:36
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 18 שנכתבה על ידי PDP שמתחילה ב "כל הכבוד ! עובד מצויין..."

1. הסוגריים המרובעות היא "מחלקת תווים", כל תו או טווח תווים הנמצא בתוכה, יתאים.
2. אם התו ^ מופיע מיד בתחילתה, הוא משתמש לשלילה. שזה אומר שכל תו העונה על התווים שבמחלקה לא יתאים אלא רק תווים שאינם במחלקה, יתאימו.
3. הסוגריים משמשים במקרה הראשון (אלו שמקיפים את כל הביטוי) רק לצורך איחזור התוכן. אני רוצה שהמחרוזת ש"נתפסת" על ידי הביטוי תשמר במשתנה לצורך שימשו חוזר. וזה גם עונה על שאלתך אודות "\\1". הביטוי הזה מסמן ש"כאן" יכנס הערך השמור במשתנה הראשון. קרי, מה שנתפס בסוגריים הראשונים.
4. הסוגריים השניים במקרה הזה משמשים לצורך בחירה בין שני ביטויים, כל מה שבסוגריים נחלק לשני ביטויים שמספיק שאחד מהם יתאים (לשם כך השתמשתי בתו | שמשמש כאופרטור OR). הביטוי הראשון הוא כפי שהסברתי כאן בסעיף 1, הביטוי השני הוא "\b", שזה אומר, גבול של מילה (מיועד כדי ל"תפוס" מילים הנמצאות מיד בתחילת המחרוזת ללא תו לפניהם). תשים לב שצריך שאחד מהם יתאים, או הביטוי הראשון (תווים שאינן אותיות עבריות, לועזיות או רווח) או הביטוי השני, שהוא "גבול של מילה".
5. לאחמ"כ מגיע כמובן המילה המיועדת לצנזור כשלאחריה בא שוב ביטוי דומה לזה שלפניה, בעיקר כדי למנוע "תפיסה" של מילים המתחילות כמילה הדורשת צינזור אבל הם חלק ממילה אחרת.

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

כלי אשכול חפש באשכול זה
חפש באשכול זה:

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

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 15:10

הדף נוצר ב 0.08 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר